为什么带有连字符和空格的字母数字的正则表达式传递特殊字符,如#等

时间:2016-01-27 17:56:10

标签: javascript regex

以下是正则表达式

new RegExp("[a-zA-Z0-9-]+$").test("@#2131")

返回true。为什么允许使用特殊字符:@和#。我不明白原因,我已经多次交叉检查了几乎所有互联网上可用的主要资源。这个表达有什么问题?

  

我想写的正则表达式应遵循规则:必须以字母数字开头,可以包含空格和连字符,并且必须以字母数字字符结尾。为此,我写了[0-9a-zA-Z]+[0-9a-zA-Z -]*[0-9a-zA-Z]+$,它也通过BTW传递test方法中的上述文字。

1 个答案:

答案 0 :(得分:0)

您忘记添加线锚的开头。如果没有^,您的正则表达式应检查行尾的一个或多个字母数字字符+ _

new RegExp("^[a-zA-Z0-9-]+$").test("@#2131")

/^[a-zA-Z0-9-]+$/.test("@#2131")