小编典典

regex.test VS string.match 以了解字符串是否与正则表达式匹配

all

很多时候,我使用字符串match函数来了解字符串是否与正则表达式匹配。

if(str.match(/{regex}/))

这之间有什么区别:

if (/{regex}/.test(str))

他们似乎给出了相同的结果?


阅读 122

收藏
2022-04-07

共1个答案

小编典典

基本用法

首先,让我们看看每个函数的作用:

正则表达式对象测试字符串

执行正则表达式和指定字符串之间的匹配搜索。返回 truefalse

字符串匹配正则表达式

用于在将字符串与正则表达式匹配时检索匹配项。返回一个包含匹配项的数组,或者null如果没有匹配项。

由于null评估为false

if ( string.match(regex) ) {
  // There was a match.
} else {
  // No match.
}

表现

性能上有什么区别吗?

的。我在MDN
网站上
找到了这个简短的说明:

如果您需要知道字符串是否与正则表达式 regexp 匹配,请使用 regexp.test(string)。

差异显着吗?

答案再次是 肯定 的!我放在一起的这个jsPerf显示差异是
~30% - ~60% ,具体取决于浏览器:

测试与匹配 |  性能测试

结论

如果.test您想要更快的布尔检查,请使用。使用全局标志.match时用于检索所有匹配项。g

2022-04-07