我有一个字符串,我想要替换operator like (+, -, /, *)
,以便我能够分开表达式。
var exp = '9 + 3 - 7 / 4 * 6.56';
// current output 9 3 7 4 6 56
// desired result 9 3 7 4 6.56
document.body.innerHTML = exp.replace(/ /g,'').replace(/[+-\/\*]/g, ' ');

但是,replace()
方法会返回不良结果。
答案 0 :(得分:4)
-
表示正则表达式中字符类中的范围。要么把它放在开头还是结尾,要么逃避它。
document.body.innerHTML = exp.replace(/ /g,'').replace(/[+\/*-]/g, ' ');
答案 1 :(得分:4)
您可以减少代码,
exp.replace(/\s*[-+\/*]\s*/g, ' ');
在某些情况下,字符类中间的未转义连字符-
将像范围运算符一样。所以你需要转义连字符,或者你需要把它放在字符类的开头或结尾。
示例:
> var exp = '9 + 3 - 7 / 4 * 6.56';
> exp.replace(/\s*[-+\/*]\s*/g, ' ');
'9 3 7 4 6.56'
如果输入包含负数,我认为它需要以下格式。
> var exp = '-9 + 3 - 7 / 4 * -6.56';
undefined
> exp.replace(/\s+[-+\/*]\s+/g, ' ');
'-9 3 7 4 -6.56'
答案 2 :(得分:1)
基于数字之间的运算符进行拆分,以便考虑负数。
(?!=\d) [-+*/] (?=\d|-)
它使用Look Around来查看操作符后面的数字。
它适用于负数,例如-9 + 3 - 7 / 4 * 6.56