在 JavaScript 中,正则表达式未按预期工作。

3

我已经创建了一个用于姓名验证的正则表达式,只允许使用“_”、“-”、“'”、“.”。

以下是正则表达式:

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

问题是它允许使用带有@符号的名称,请查看演示链接
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个回答

4
不要忘记在Javascript中使用正则表达式分隔符:
alert(str.match(/^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$/));

甚至更好的是:
alert(str.match(/^[a-zA-Z][\w'.-]{1,24}$/));

更新后的 JSFiddle


-1

我猜这个也可以做同样的事情:

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

定义:

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


您允许字符串开头为数字。 - nhahtdh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接