正则表达式在第一场比赛后没有进展

Regular expression not progressing after first match

本文关键字:一场 正则表达式      更新时间:2023-09-26

下面的代码是我试图写一个正则表达式来匹配"cat"answers"car"字符串。

(function (){
  
    console.log(/(ca(t|r))+?/.exec(["cat", "car", "catcoon"]));
  })()

首先匹配"ca",然后该方法将查找"t"或"r"。然后用()+?允许多个匹配。但是,控制台显示["cat", "cat", "t"],表示在第一次匹配后卡住。

exec语法为:

regexObj.exec(str)
参数

str要与之匹配的字符串表达式。

MDN

你传递的不是字符串,而是数组。JavaScript将尽其所能将其编码为字符串。基本上你需要:

(function (){
   var arr = ["cat", "car", "catcoon"];
   for (var i = 0; i < arr.length; i++) {
     var str = arr[i];
     console.log(/(ca(t|r))+?/.exec(str));
   }
})()

希望有帮助!

var result =["cat", "car", "catcoon", "cat", "car", "catcoon"].filter(x => /^ca[tr]$/.exec(x));
console.log(result)