javascript:alert(/^(?=.*?[^0-9A-Za-z]|[^a-zA-Z])/.test('123'));
javascript:alert(/^(?=.*?[^0-9A-Za-z]|[^a-zA-Z])/.test('a123'));
javascript:alert(/^(?=.*?[^0-9A-Za-z]|[^a-zA-Z])/.test('a12=3'));
条件成立即为不合法.

解决方案 »

  1.   

    <script type="text/javascript">
    var pattern = /^(?![0-9A-Za-z](?:[0-9A-Za-z_]*[0-9A-Za-z])?$)/;
    alert(pattern.test('_123'));
    alert(pattern.test('123_'));
    alert(pattern.test('a1_23'));
    alert(pattern.test('1'));
    alert(pattern.test('a12-3'));
    </script>
      

  2.   

    两个下划线也不能连续呀,用户名不能注册为a__b 只能是a_b
      

  3.   


    <script type="text/javascript">
    var pattern1 = /^(?!.*?__)[0-9A-Za-z](?:[0-9A-Za-z_]*[0-9A-Za-z])?$/;
    var pattern2 = /^(?=.*?__|(?![0-9A-Za-z](?:[0-9A-Za-z_]*[0-9A-Za-z])?$))/;var assert = function () {
    var args = Array.prototype.slice.call(arguments, 0)
    , pat = args.shift()
    , result = [];

    while (args.length) result[result.push(args.shift()) - 1] += ':' + pat.test(result[result.length - 1]);
    return result;
    };
    alert(
    assert(
    pattern1
    , 'a12__3'
    , '_123'
    , '123_'
    , 'a1_23'
    , '1'
    , 'a12-3'
    ).join('\n')
    );alert(
    assert(
    pattern2
    , 'a12__3'
    , '_123'
    , '123_'
    , 'a1_23'
    , '1'
    , 'a12-3'
    ).join('\n')
    );
    </script>
      

  4.   

    /^(?=[a-z0-9])(([a-z0-9]*)|(([a-z0-9]+?_?)*))(?:[a-z0-9])$/
      

  5.   

    简化一下。^(([a-z0-9]*)|(([a-z0-9]+?_?)*))(?:[a-z0-9])$
      

  6.   

    呵呵...
    在优化一下.../^[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*$/
    or
    /^(?:[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*)?$/
      

  7.   

    en,
    确实比我的简单,提醒一下,
    楼主的要求是小写字母和数字.
    所以,还能简单一些.HOHO
      

  8.   


    呃...
    果然还是看跳跃了...
    呵呵.../^[a-z0-9]+(?:_[a-z0-9]+)*$/
    修正下...飘走...