正则表达式在第一场比赛后没有进展
Regular expression not progressing after first match
下面的代码是我试图写一个正则表达式来匹配"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)
相关文章:
- 正则表达式,从一组关键字中获取奇数
- 将具有两个此类子字符串的字符串中的第一个子字符串生成与正则表达式匹配,正则表达式通常默认匹配最后一个子字符串
- Javascript 正则表达式匹配字母数字,其中数字不限于一位数
- Javascript 正则表达式,只替换一次
- 添加一条规则以将前导0删除到现有正则表达式中
- Javascript 正则表达式匹配一次
- 如何使用正则表达式每隔一秒选择一次
- 正则表达式回调函数只执行一次
- JS - 正则表达式替换在一次调用中发生多次,如何让它运行一次
- 将匹配字符串中最后一次出现的点的正则表达式
- JavaScript 正则表达式,用于检查单个特殊字符是否在字符串中出现一次
- 如何编写允许某些字符仅重复一次的正则表达式
- 如何使用正则表达式以另一种形式转换数据
- Javascript:在正则表达式中反向引用而不记得上一场比赛
- 正则表达式匹配一美元,前面没有反斜杠
- 反转一组相当复杂的正则表达式
- 如何使用Javascript正则表达式从可能的单词列表中获取单词的最后一次出现
- 如何使正则表达式从一开始就匹配模式
- 正则表达式:搜索并换行字符'(关于a)'带有'<b>$1</b>'在一句
- Javascript:在HTML表中,如何从一列中选择部分文本(匹配一些正则表达式),并将其移动到下一列