regex.test和string.match用于判断一个字符串是否匹配一个正则表达式。
regex.test和string.match用于判断一个字符串是否匹配一个正则表达式。
很多时候我使用字符串的match
函数来确定一个字符串是否与正则表达式匹配。
if(str.match(/{regex}/))
这两种方式有什么不同吗:
if (/{regex}/.test(str))
它们似乎给出了相同的结果?
admin 更改状态以发布 2023年5月23日
基本用法
首先,让我们看看每个函数的作用:
regexObject.test( String )
执行在指定的字符串中正则表达式的匹配,并返回true或false。
string.match( RegExp )
用于从正则表达式匹配的字符串中检索匹配项。如果没有匹配项,则返回一个包含匹配项的数组或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
时检索所有匹配项。