Javascript 使用正则表达式对字符串的同一部分进行两次匹配和分组?

Javascript 使用正则表达式对字符串的同一部分进行两次匹配和分组?,javascript,regex,Javascript,Regex,这很难用语言来解释,所以也许我可以展示我想要的 目前我有以下代码: const regex=/(\d?\s\+?\s\d)|(\d?\s\-?\s\d)/g 常量匹配='1+2-7'。匹配(正则表达式) log(match)您可以在中使用捕获组,并使用[+-]来匹配+或- (?=(\d+ [+-] \d+)) 图案部分 (?=正向前瞻,断言直接在右侧的是 (捕获组1 \d++[+-]\d++匹配1+位数字、空格、或-、空格和1+位数字 )关闭组 )关闭前瞻 请注意,\s也将匹配

这很难用语言来解释,所以也许我可以展示我想要的

目前我有以下代码:

const regex=/(\d?\s\+?\s\d)|(\d?\s\-?\s\d)/g
常量匹配='1+2-7'。匹配(正则表达式)

log(match)
您可以在中使用捕获组,并使用
[+-]
来匹配
+
-

(?=(\d+ [+-] \d+))
图案部分

  • (?=
    正向前瞻,断言直接在右侧的是
    • 捕获组1
      • \d++[+-]\d++
        匹配1+位数字、空格、或-、空格和1+位数字
    • 关闭组
  • 关闭前瞻

请注意,
\s
也将匹配换行符

const regex=/(?=(\d++-]\d+)/g;
常量str=`1+2-7`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
console.log(m[1]);

}
您在那里总是有3个数字?@SnakeEyes它可以是任意数量的数字,但出于这个问题的目的,我只想知道是否可以使用正则表达式实现所需的输出。@JossClassey如果不使用while循环,您只会得到第一个结果。可能会对您有所帮助,谢谢您的澄清和出色的回答:)