Javascript 带有重复模式的正则表达式捕获
我试图捕捉字符串的所有部分,但似乎无法正确捕捉 字符串具有以下结构:Javascript 带有重复模式的正则表达式捕获,javascript,regex,Javascript,Regex,我试图捕捉字符串的所有部分,但似乎无法正确捕捉 字符串具有以下结构:1+22+33。中间有运算符的数字。可以有任意数量的术语 我想要的是[“1+22+33”,“1”,“+”,“22”,“+”,“33”] 但是我得到:[“1+22+33”,“22”,“+”,“33”] 我尝试过各种正则表达式,这是我最好的正则表达式,但显然是错误的 let re = /(?:(\d+)([+]+))+(\d+)/g; let s = '1+22+33'; let m; while (m = re.exec(s))
1+22+33
。中间有运算符的数字。可以有任意数量的术语
我想要的是[“1+22+33”,“1”,“+”,“22”,“+”,“33”]
但是我得到:[“1+22+33”,“22”,“+”,“33”]
我尝试过各种正则表达式,这是我最好的正则表达式,但显然是错误的
let re = /(?:(\d+)([+]+))+(\d+)/g;
let s = '1+22+33';
let m;
while (m = re.exec(s))
console.log(m);
注意:操作员可能会有所不同。所以在现实中,我会寻找
[+/*-]
只要想到一个解决方案:/(\d+)|([+*/-]+)/g代码>您可以简单地使用,如下所示:
const输入='3+8-12';//我很乐意添加一些随机空间
console.log(input.split(/\s*(\+\124;-)\ s*/);/)根据需要添加尽可能多的其他运算符
您只需对数字进行拆分
:
console.log(
“1+22+33”。拆分(/(\d+/)。筛选器(布尔值)
);
此正则表达式不起作用,因为它有一个未替换的分隔符。它还将匹配1-+*/23,我认为这是不合法的?对,乘数是错误的。我注意到,是否需要在类中转义这些运算符取决于正则表达式引擎。我在node.js上使用它,它工作得很好,但我想它会降低我的代码的可移植性。