1

正则表达式

 [A-Za-z_-]+ 

应该匹配只有大写和小写字母、下划线和破折号的字符串

但是当我在 chrome 控制台中运行时

 /[A-Za-z_-]+/.test("johmSmith12")

为什么它返回 true

4

2 回答 2

2

因为你没有锚定表达式。您需要添加^and $,它匹配字符串的开头和结尾。

例如:

^[A-Za-z_-]+$

只是[A-Za-z_-]+johnSmith在您的示例中匹配,省略12(正如大卫斯塔基指出的那样)。

于 2013-05-20T19:33:25.147 回答
0

这是由于您的正则表达式在测试字符串中查找与正则表达式匹配的任何字符序列。在您的示例中,"johnSmith"匹配您的正则表达式条件,因此test返回true.

如果您改为将^(start of string) 和$(end of string) 放在正则表达式的末尾,那么您将断言整个字符串必须与您的正则表达式匹配:

/^[A-Za-z_-]+$/.test("johnSmith12");

这将返回false

于 2013-05-20T19:38:58.563 回答