2016-06-14 68 views
0

我有一个包含算术运算符的字符串数组,我想用新的算术运算符替换数组中的算术运算符。使用正则表达式替换Javascript中的算术运算符

例如:

var equation = '5.0 + 9.34 - 6.0 * 2.1 * 3.1/2.0'; 

var newEquation = equation.replace(/+-*//, '+'); 

但是,它不会改变到想要的结果。请指教。你的贡献非常感谢。

+0

这不是一个数组。这只是一个字符串文字。 – Li357

回答

3

使用character class([])

var equation = '5.0 + 9.34 - 6.0 * 2.1 * 3.1/2.0'; 
 

 
var newEquation = equation.replace(/[+*\/-]/g, '+'); 
 
// or : equation.replace(/[+\-*/]/g, '+'); 
 

 
console.log(newEquation);


UPDATE:为了避免负数使用 negative look-ahead assertioncapturing group

var equation = '-5.0 + 9.34 - 6.0 * -2.1 * 3.1/-2.0'; 
 

 
var newEquation = equation.replace(/(?!^-)[+*\/-](\s?-)?/g, '+$1'); 
 

 
console.log(newEquation);

Regex explanation here

Regular expression visualization

+0

感谢您的贡献@Pranav是否有办法区分负数?例如:'-5.0 + 9.34 - -6.0' – Clay

+0

@Clay:更新 –

+0

谢谢@Pranav。非常感激! – Clay