Javascript测试方法不工作(如预期)

Javascript test method not working ( as expected )

本文关键字:测试方法 工作 Javascript      更新时间:2023-09-26

正则表达式

 [A-Za-z_-]+ 

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

但是当我在chrome控制台运行

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

为什么返回true

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

例如:

^[A-Za-z_-]+$

在您的示例中,只有[A-Za-z_-]+将匹配johnSmith,而不包括12(如David Starkey所指出的)。

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

如果你把^(字符串的开始)和$(字符串的结束)放在regex的末尾,那么你会断言整个字符串必须匹配你的regex:

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

这将返回false