This question already has answers here:
How can I match overlapping strings with regex?
(6个答案)
12个月前关闭。
我想匹配所有出现的字符串。
例:
我想检查
但是我只有
问题在于第一次比赛
我该如何解决这个问题?
(6个答案)
12个月前关闭。
我想匹配所有出现的字符串。
例:
pc+pc2/pc2+pc2*rr+pd
我想检查
pc2
值和正则表达式匹配的数量before and after special character
是否存在。var str = "pc+pc2/pc2+pc2*rr+pd";
var res = str.match(new RegExp("([\\W])pc2([\\W])",'g'));
但是我只有
+pc2/
和+pc2*
和/pc2+
不能进入。问题在于第一次比赛
/
被删除。因此,此后,它开始从pc2+pc2*rr+pd
检查。这就是为什么/pc2+
值不进入匹配的原因。我该如何解决这个问题?
最佳答案
您需要某种递归正则表达式来实现您要获取的内容,如果字符串中的值为lastIndex
,则可以使用exec来操纵p
。
let regex1 = /\Wpc2\W/g;
let str1 = 'pc+pc2/pc2+pc2*rr+pd';
let array1;
let op = []
while ((array1 = regex1.exec(str1)) !== null) {
op.push(array1[0])
if(str1[regex1.lastIndex] === 'p'){
regex1.lastIndex--;
}
}
console.log(op)
07-24 22:00