正则表达式在第一次匹配后没有进展

时间:2016-10-21 09:24:45

标签: javascript regex

以下代码是我尝试编写一个能够匹配" cat"和"汽车"字符串。



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




" ca"将首先匹配,然后该方法将寻找a" t"或者" r"。然后用()+包裹它?允许多个匹配。 但是,控制台显示["cat", "cat", "t"]表示在第一场比赛后卡住了。

2 个答案:

答案 0 :(得分:2)

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));
   }
})()

答案 1 :(得分:0)

希望这有帮助!

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

console.log(result)