使用regex删除操作

使用regex删除操作,regex,Regex,我得到一个字符串返回“1+2”,并希望删除“+”,然后将数字相加。 使用正则表达式可以这样做吗?到目前为止,我已经: let matches = pattern.exec(this.expression); matches.input.replace(/[^a-zA-Z ]/g, "") 我现在只剩下两个数字。我怎么加在一起 “this.a+this.b”不能使用正则表达式添加两个数字 如果您拥有的是一个格式为“1+2”的字符串,为什么不简单地在+符号上拆分该字符串,并在添加数字之前对其进行p

我得到一个字符串返回“1+2”,并希望删除“+”,然后将数字相加。 使用正则表达式可以这样做吗?到目前为止,我已经:

let matches = pattern.exec(this.expression);
matches.input.replace(/[^a-zA-Z ]/g, "")
我现在只剩下两个数字。我怎么加在一起


“this.a+this.b”

不能使用正则表达式添加两个数字

如果您拥有的是一个格式为
“1+2”
的字符串,为什么不简单地在
+
符号上拆分该字符串,并在添加数字之前对其进行
parseInt

var str=“1+2”;
var parts=str.split(“+”)//给我们[“1”,“2”]
log(parseInt(部分[0])+parseInt(部分[1]);

假设返回的字符串只有“+”操作,那么:

const sum = str.split('+').reduce((sumSoFar, strNum) => sumSoFar + parseInt(strNum), 0);

如果您不总是知道两个数字之间的分隔符是什么,那么可以使用正则表达式来获取数字数组,然后从中进行缩减或其他操作

var myString = '1+2 and 441 with 9978';
var result = myString.match(/\d+/g).reduce((a,n)=> a+parseInt(n),0);
console.log(result); // 1 + 2 + 441 + 9978 = 10422
*编辑:如果您真的想解析字符串中包含的数学运算,有几个选项。首先,如果字符串来自受信任的源,则可以使用。但这几乎和使用
eval
一样危险,因此使用时应格外小心。如果您正在处理用户通过网页输入的字符串,则绝对不应使用此选项

var myFormula = '1+2 * 441 - 9978';
var fn = new Function('return ' + myFormula);
var output = fn();
console.log(myFormula, ' = ', output); //1+2 * 441 - 9978  =  -9095

一个更安全(但更困难)的课程是编写自己的数学解析器,它可以检测数学符号和数字,但可以防止其他人注入可能影响全局范围变量等的随机命令。

Regex不做数学。我知道,但是我该如何计算结果呢?你只是想把所有整数相加成一个字符串吗?不使用正则表达式。为什么在这里使用正则表达式?在
+
上拆分,将子字符串转换为数字,然后进行加法。如果我在进行乘法、除法或减法,该怎么办?@user992731这意味着另一个问题。您询问了如何删除计算器操作,保留数字,然后使用regex@user992731我更新了我的答案,以反映实现这一点的几种方法。如果你在最初的问题中说明了这一点,那会很有帮助。