正则表达式在javascript中没有按预期工作

时间:2014-12-15 09:32:51

标签: javascript regex

我为名称验证创建了一个正则表达式,其中只有“_”,“ - ”,“'”,“。 “允许。

这是正则表达式:

^[a-zA-Z][a-zA-Z0-9\.\-_']{1,24}$

问题在于它允许名称为@,请检查Fiddle demo

var str = "deepak@";
var str2 = "@@";
alert(str.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//allowing why?
alert(str2.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//not allowing

预期:@的名称不允许。

注意:当我在https://regex101.com/#javascript中测试这个正则表达式时,它的工作正常

2 个答案:

答案 0 :(得分:4)

不要忘记在Javascript中使用正则表达式分隔符:

alert(str.match(/^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$/));

甚至更好:

alert(str.match(/^[a-zA-Z][\w'.-]{1,24}$/));

Updated JSFiddle

答案 1 :(得分:-1)

我想这会做同样的事情:

str.match(/^\w{1,24}$/);

<强>定义:

\ w元字符用于查找单词字符。 单词字符是a-z,A-Z,0-9中的字符,包括_(下划线)字符。