Javascript 如何为所有事件获取正则表达式的匹配索引

Javascript 如何为所有事件获取正则表达式的匹配索引,javascript,regex,Javascript,Regex,我有一根绳子 CO12dadaCO2dafdCO345daaf 我想提取所有出现的CO,后跟一些数字/CO(\d*)([\s\s]*)/,直到另一个CO 在这种情况下,我希望得到输出: ['CO12dada','CO2dafd','CO345daaf'] 我试过的上面的正则表达式也同时与CO的其他正则表达式匹配,所以它不起作用 我可以使用str.search获取第一个匹配项的正则表达式索引,但我需要所有匹配项的正则表达式索引。或此: CO\w+?(?=CO|$) 请参见此处的演示: 基本上是:

我有一根绳子

CO12dadaCO2dafdCO345daaf

我想提取所有出现的CO,后跟一些数字
/CO(\d*)([\s\s]*)/
,直到另一个CO

在这种情况下,我希望得到输出:

['CO12dada','CO2dafd','CO345daaf']

我试过的上面的正则表达式也同时与CO的其他正则表达式匹配,所以它不起作用

我可以使用
str.search
获取第一个匹配项的正则表达式索引,但我需要所有匹配项的正则表达式索引。

或此:

CO\w+?(?=CO|$)
请参见此处的演示:

基本上是:在“CO”之后的所有“单词字符”的“非贪婪”匹配,然后是要求另一个“CO”或字符串结尾的前瞻

如果还希望匹配“非单词字符”,可以将regexp修改为

CO[\w\W]+?(?=CO|$)
这也将对类似于
“co12dadadaco2da,fdCO345daaf”
的内容起作用,以生成匹配:
[“CO12dada”,“CO2da,fd”,“CO345daaf”]
const字符串='CO12dadaCO2dafdCO345daaf'
const result=string.match(/(CO.*?(=CO |$)/g)

log(result)
使用Javascript,您可以使用

CO[^]*?(?=CO|$)
  • CO[^]*?
    匹配CO,然后尽可能少地匹配包含换行符的任何字符
  • (?=CO |$)
    正向前瞻,断言右边的是CO或字符串的结尾

只需使用
.split()获取匹配项即可。


console.log(“co12dadadaco2dafdco345daaf.split(/(?!^)(?=CO)/)
像这样
CO[a-z0-9]+
我需要匹配that后面的任何东西,除了另一个匹配。使用具有正向前瞻性的非贪婪量词
CO[\s\s]*?(?=CO |$)
使用Javascript,你也可以将其缩短为
CO[^]*(?=CO |$)
我接受了这个答案,因为你提到了解决这个问题的全局选项。很酷,我不知道split这样使用正则表达式。这是一个积极的前瞻,什么是(?!^)做的?@eguneys
(?!^)
是一个消极的前瞻,请看,所以拆分相当于一个带有全局正则表达式的
match
。请澄清您的答案。@Egueys这超出了范围,但您可能希望匹配字符串中的空位置以在其中插入内容<代码>“a1b2”。替换(/(?=\d)/g,“-”)返回
a-1b-2
。这是你的必读读物。另外,请参见。