很多时候,我使用字符串match函数来了解字符串是否与正则表达式匹配。
match
if(str.match(/{regex}/))
这之间有什么区别:
if (/{regex}/.test(str))
他们似乎给出了相同的结果?
首先,让我们看看每个函数的作用:
正则表达式对象 。 测试 ( 字符串 )
执行正则表达式和指定字符串之间的匹配搜索。返回 true 或 false 。
字符串 。 匹配 ( 正则表达式 )
用于在将字符串与正则表达式匹配时检索匹配项。返回一个包含匹配项的数组,或者null如果没有匹配项。
null
由于null评估为false,
false
if ( string.match(regex) ) { // There was a match. } else { // No match. }
性能上有什么区别吗?
是 的。我在MDN 网站上找到了这个简短的说明:
如果您需要知道字符串是否与正则表达式 regexp 匹配,请使用 regexp.test(string)。
差异显着吗?
答案再次是 肯定 的!我放在一起的这个jsPerf显示差异是 ~30% - ~60% ,具体取决于浏览器:
如果.test您想要更快的布尔检查,请使用。使用全局标志.match时用于检索所有匹配项。g
.test
.match
g