javascript的中的test和match,结果你不敢相信
大家看下代码,这个test和match还是晕了我很久的。
var __parsers = []; __parsers.push({'regExp':/.*one.*/g}); __parsers.push({'regExp':/.*two.*/g}); __parsers.push({'regExp':/.*three.*/g}); __parsers.push({'regExp':/.*four.*/g}); __parsers.push({'regExp':/.*five.*/g}); __parsers.push({'regExp':/.*six.*/g}); __parsers.push({'regExp':/.*seven.*/g}); __parsers.push({'regExp':/.*eight.*/g}); var matchParser = function(subject){ for (var i = 0; i < __parsers.length; i++) { // console.log('RegExp:',__parsers[i].regExp); if(subject.match(__parsers[i].regExp)){ return __parsers[i]; } } throw new Error('No Match'); } var testParser = function(subject){ for (var i = 0; i < __parsers.length; i++) { // console.log('RegExp:',__parsers[i].regExp); if (__parsers[i].regExp.test(subject)) { return __parsers[i]; } } throw new Error('No Match'); }
简单的测试代码就这些。我们用一个循环来执行。
//第一种测试
for(var i=0;i<5;i++){ var subject = 'two'; try{ console.log(testParser(subject)); }catch(err){ console.log(err.message); } }
//结果
{ regExp: /.*two.*/g } No Match { regExp: /.*two.*/g } No Match { regExp: /.*two.*/g }
看吧,还是有没有匹配到的吧。罪过啊。
//第二种测试
for(var i=0;i<5;i++){ var subject = 'two'; try{ console.log(matchParser(subject)); }catch(err){ console.log(err.message); } }
//结果
{ regExp: /.*two.*/g } { regExp: /.*two.*/g } { regExp: /.*two.*/g } { regExp: /.*two.*/g } { regExp: /.*two.*/g }
你们看,是不是瞬间很开心啊。
可以使用nodejs执行整理执行一下。被坑了的感觉有木有啊!
可以看出来,使用match的全部匹配出来了,为什么,给你一个可想的空间吧。match完胜啊。
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/650
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/650