Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有重复模式的正则表达式捕获_Javascript_Regex - Fatal编程技术网

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上使用它,它工作得很好,但我想它会降低我的代码的可移植性。