以下代码是我尝试编写一个能够匹配" cat"和"汽车"字符串。
(function (){
console.log(/(ca(t|r))+?/.exec(["cat", "car", "catcoon"]));
})()

" ca"将首先匹配,然后该方法将寻找a" t"或者" r"。然后用()+包裹它?允许多个匹配。
但是,控制台显示["cat", "cat", "t"]
表示在第一场比赛后卡住了。
答案 0 :(得分:2)
exec
语法是:
regexObj.exec(str)
参数
str 字符串与常规匹配 表达
你没有传入一个字符串,你传入一个数组。 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)