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

2020/10/06 21:00 · javascript ·  · 0评论

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

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

之间有什么区别:

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

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

基本用法

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

regexObject测试字符串

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

字符串匹配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); // => true
reg.test('abcdefghi');    // => true
reg.test('abcdefghi');    // => false <=

这是因为在找到新匹配项时,Regexp会跟踪lastIndex。

这是我的基准测试结果
基准结果

测试4,267,740 ops / sec±1.32%(60次运行采样)

exec 3,649,719 ops / sec±2.51%(60次运行采样)

匹配3,623,125 ops / sec±1.85%(62次运行采样)

指数6,230,325 ops / sec±0.95%(62次运行采样)

测试方法比匹配方法快,但是最快的方法是indexOf

本文地址:http://javascript.askforanswer.com/regex-testyuvs-string-matchlailejiezifuchuanshifouyuzhengzebiaodashipipei.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!