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

我match经常使用字符串函数来知道字符串是否与正则表达式匹配。


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

之间有什么区别:


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

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


月关宝盒
浏览 610回答 3
3回答

绝地无双

基本用法首先,让我们看看每个函数的作用:regexObject。测试(字符串)搜索正则表达式和指定字符串之间的匹配项。返回true或false。字符串。匹配(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。

红颜莎娜

不要忘记考虑正则表达式中的全局标志:var reg = /abc/g;!!'abcdefghi'.match(reg); // => true!!'abcdefghi'.match(reg); // => truereg.test('abcdefghi');&nbsp; &nbsp; // => truereg.test('abcdefghi');&nbsp; &nbsp; // => false <=这是因为Regexp在找到新匹配项时会跟踪lastIndex。
打开App,查看更多内容
随时随地看视频慕课网APP