正则表达式
[A-Za-z_-]+
应该匹配只有大写和小写字母、下划线和破折号的字符串
但是当我在 chrome 控制台中运行时
/[A-Za-z_-]+/.test("johmSmith12")
为什么它返回 true
正则表达式
[A-Za-z_-]+
应该匹配只有大写和小写字母、下划线和破折号的字符串
但是当我在 chrome 控制台中运行时
/[A-Za-z_-]+/.test("johmSmith12")
为什么它返回 true
因为你没有锚定表达式。您需要添加^
and $
,它匹配字符串的开头和结尾。
例如:
^[A-Za-z_-]+$
只是[A-Za-z_-]+
将johnSmith
在您的示例中匹配,省略12
(正如大卫斯塔基指出的那样)。
这是由于您的正则表达式在测试字符串中查找与正则表达式匹配的任何字符序列。在您的示例中,"johnSmith"
匹配您的正则表达式条件,因此test
返回true
.
如果您改为将^
(start of string) 和$
(end of string) 放在正则表达式的末尾,那么您将断言整个字符串必须与您的正则表达式匹配:
/^[A-Za-z_-]+$/.test("johnSmith12");
这将返回false
。