用单词来解释这一点非常困难,所以也许我可以展示我想要的东西。
目前,我有以下代码:
const regex = /(\d?\s\+?\s\d)|(\d?\s\-?\s\d)/g
const match = '1 + 2 - 7'.match(regex)
console.log(match)Run Code Online (Sandbox Code Playgroud)
这将返回两个匹配项:
[ "1 + 2", " - 7" ]
Run Code Online (Sandbox Code Playgroud)
现在,我想知道的是,是否可以创建一个可以匹配整数2两次并将其作为两个结果一部分的正则表达式模式?
所需输出:
[ "1 + 2", "2 - 7" ]
Run Code Online (Sandbox Code Playgroud)
您可以使用正向前瞻的捕获组并使用字符类 [+-]来匹配+或-
(?=(\d+ [+-] \d+))
Run Code Online (Sandbox Code Playgroud)
图案零件
(?= 积极向前看,断言右边是
( 捕获组1
\d+ [+-] \d+ 匹配1+位数字,空格,+或-,空格和1+位数字) 封闭组) 提前关闭请注意,这\s还将匹配换行符。
(?=(\d+ [+-] \d+))
Run Code Online (Sandbox Code Playgroud)