首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于检查多个匹配的RegEx

用于检查多个匹配的RegEx
EN

Stack Overflow用户
提问于 2019-05-21 20:44:00
回答 1查看 234关注 0票数 -1

我希望匹配字符串中的所有匹配项。

示例:

代码语言:javascript
复制
pc+pc2/pc2+pc2*rr+pd

我想检查有多少匹配的pc2值和正则表达式是before and after special character存在。

代码语言:javascript
复制
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+值不会出现在匹配中。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-05-21 20:58:38

你需要一些递归的正则表达式来实现你想要得到的东西,你可以在字符串中的值为p的情况下使用来操作lastIndex

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56238596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档