正则表达式,用于检查多个匹配项

时间:2019-05-21 12:44:00

标签: javascript regex string regex-group regex-greedy

我想匹配所有出现在字符串中的东西。

示例:

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+值未加入匹配的原因。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您需要某种递归正则表达式来实现您要获取的内容,如果字符串中的值为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)