我希望匹配字符串中的所有匹配项。
示例:
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+
值不会出现在匹配中。
我该如何解决这个问题?
发布于 2019-05-21 20:58:38
你需要一些递归的正则表达式来实现你想要得到的东西,你可以在字符串中的值为p
的情况下使用来操作lastIndex
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)
https://stackoverflow.com/questions/56238596
复制相似问题