很奇怪的説。。
我想写个验证首位为字母,@前的用户名为4-32位的字母、数字或下划线
但是怎么写都不对,请教一下大侠们了。。
var reg=new RegExp("^[A-Za-z](\w{3,31})\@(\w+)\.(\w+)$");麻烦大侠解释一下这样写的问题是什么~~~~~
我想写个验证首位为字母,@前的用户名为4-32位的字母、数字或下划线
但是怎么写都不对,请教一下大侠们了。。
var reg=new RegExp("^[A-Za-z](\w{3,31})\@(\w+)\.(\w+)$");麻烦大侠解释一下这样写的问题是什么~~~~~
var reg=/^[A-Za-z](\w{3,31})\@(\w+)\.(\w+)$/;
不说正则对不对,但是用字符串来定义的话,注意转义
像正则的\w就应该写成\\w
所以推荐用1楼的方式写
var reg=/^[A-Za-z]\w{3,31}@\w+\.\w+$/;//使用RegExp()//里面的参数要使用\\来转义,比如new RegExp("\\w");这才表示\w,然后你的正则里许多括号没必要,这样会分组捕获,降低效率
var s1="[email protected]",s2="[email protected]",s3="[email protected]";
alert(reg.test(s1));
alert(reg.test(s2));
alert(reg.test(s3));
1,@这个符号是不要转义的,你转义了。要把前面的那个\取消掉。
2,如果你用构造方法去得到正则表达式的对象,那你传入进去的字符串中\也是要转义的,所以最后变成为:
var reg=new RegExp("^[A-Za-z](\\w{3,31})@(\\w+)\\.(\\w+)$"); 这才对。