Javascript测试方法无法正常工作(如预期)

时间:2013-05-20 19:32:56

标签: javascript regex performance

正则表达式

 [A-Za-z_-]+ 

应匹配仅包含大写和小写字母,下划线和短划线的字符串

但是当我在chrome console中运行时

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

为什么它返回true

2 个答案:

答案 0 :(得分:2)

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

例如:

^[A-Za-z_-]+$

只有[A-Za-z_-]+与您的示例中的johnSmith相匹配,省略12(正如David Starkey指出的那样)。

答案 1 :(得分:0)

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

如果您在正则表达式的末尾添加^(字符串的开头)和$(字符串的结尾),那么您将声明整个字符串必须符合你的正则表达式:

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

这将返回false