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_Split - Fatal编程技术网

JavaScript正则表达式为字符串中的每个项添加空间

JavaScript正则表达式为字符串中的每个项添加空间,javascript,regex,split,Javascript,Regex,Split,我有一个正则表达式,它可以检测某些字符并在该字符之前或之后添加空格,这样我就可以使用.split(“”)将它们存储在数组中。这个正则表达式有简化的形式吗 2*5--4/2=2*5--4/2 (1+5)*2/1)=(1+5)*2/1) 据我所知,您正在尝试添加空格,以便可以在空格上拆分。相反可以使用保留拆分字符的拆分版本(通过将拆分字符包含在组中)直接拆分为数组。对于拆分regexp,指定一个数字序列(带可选的前导减号),或者不指定任何内容。这将导致额外的空白字符串,因此请使用筛选器删除它们 fu

我有一个正则表达式,它可以检测某些字符并在该字符之前或之后添加空格,这样我就可以使用
.split(“”)
将它们存储在数组中。这个正则表达式有简化的形式吗

2*5--4/2=2*5--4/2

(1+5)*2/1)=(1+5)*2/1)


据我所知,您正在尝试添加空格,以便可以在空格上拆分。相反可以使用保留拆分字符的拆分版本(通过将拆分字符包含在组中)直接拆分为数组。对于拆分regexp,指定一个数字序列(带可选的前导减号),或者不指定任何内容。这将导致额外的空白字符串,因此请使用筛选器删除它们

function split(s) {
  var number_or_nothing = /(-?[\d.]+|)/;
  function non_empty(x) { return /\S/.test(x); }

  return s.split(number_or_nothing) . filter(non_empty);
}

> split("2*5--4/2")
< ["2", "*", "5", "-", "-4", "/", "2"]

> split("((1+5)*2/1)")
< ["(", "(", "1", "+", "5", ")", "*", "2", "/", "1", ")"]
功能拆分{
变量数_或_nothing=/(?[\d.]+|)/;
函数非空(x){return/\S/.test(x);}
返回s.split(数字或无)。过滤器(非空);
}
>分割(“2*5--4/2”)
< ["2", "*", "5", "-", "-4", "/", "2"]
>分割(((1+5)*2/1)
< ["(", "(", "1", "+", "5", ")", "*", "2", "/", "1", ")"]

为什么要使用
[-]
\-
而不仅仅是
-
?你只需要在类内转义它(除了边)。谢谢你的提示,先生:)为什么要用多余的括号?我正在测试它
2-2
返回
[“2”,“-2”]
但预期结果是
[“2”,“-”,“2”]
固定为接受十进制数。我很快会做另一个改变。您好,先生,与正则表达式相比,tokenizer会产生更好的结果吗?
function split(s) {
  var number_or_nothing = /(-?[\d.]+|)/;
  function non_empty(x) { return /\S/.test(x); }

  return s.split(number_or_nothing) . filter(non_empty);
}

> split("2*5--4/2")
< ["2", "*", "5", "-", "-4", "/", "2"]

> split("((1+5)*2/1)")
< ["(", "(", "1", "+", "5", ")", "*", "2", "/", "1", ")"]