var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; 
我用数据"asdadsad._" 是可以通过的
我现在把正则表达式改成
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9][._]){4,19}$/; 也就是把符号|给拿掉了,数据"asdadsad._" 测试却通过不了
为什么哦?我觉得我这样的写法是对的哦,请求帮助

解决方案 »

  1.   

    [a-zA-Z0-9]|[._] 这是或的关系 等价于[a-zA-Z0-9._][a-zA-Z0-9][._] 这是2个字符集 相当于是2个字符 比如a.b_c.这样的才行
      

  2.   


    [a-zA-Z0-9\._] 可能是没有或| 你后面的[]被分析为普通的字符串了
      

  3.   

    改成 ^[a-zA-Z]{1}([a-zA-Z0-9][._]*){4,19}$ 这样试下
      

  4.   

    [a-zA-Z0-9][._] 这是2个字符集 相当于是2个字符 比如a.b_c.这样的才行 好久没弄正则,忘记了[a-zA-Z0-9][._] 表示 a-zA-Z0-9其中一个 后面跟[._]
      

  5.   


    按照你的说法,我用
    patrn=/^[a-zA-Z]{1}([a-zA-Z0-9][._])$/;  
    来测试数据afd. 却发现通过不了
    相反用数据af.  却通过了,这个似乎不对吧