我这里有个验证邮箱的函数function isEmail(str){ 
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 
        return reg.test(str); 
}这个函数有个缺点,就是[email protected]这种是不通过的,后来老板叫我改下。我改成   var reg = /^([a-zA-Z0-9_-.])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-.])+/;   js脚本执行到这个function后好像会出现异常,不往下走了。后来改成 var reg = /^([a-zA-Z0-9_-.])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9._-])+/;   就可以了,有高手能解释下吗?

解决方案 »

  1.   

    写错了,这个函数有个缺点,就是[email protected]这种是不通过的,后来老板叫我改下。 我改成  var reg = /^([a-zA-Z0-9_-.])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-.])+/;  js脚本执行到这个function后好像会出现异常,不往下走了。 后来改成 var reg = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9._-])+/;  就可以了,有高手能解释下吗?
      

  2.   

    参见:http://www.jslab.org.cn/?tag=easyValidate中的Rule:isEmail
      

  3.   

    .   Any character except newline or another Unicode line terminator.
     
      

  4.   

    - -> \-
    . -> \.
      

  5.   


    var reg = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 
      

  6.   

    发现些问题,改下:var reg = /^[a-z\d][a-z\d_.-]*@[a-z\d][a-z0-9]*(?:\.[a-z\d][a-z0-9]*)+$/i;