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", ")"]