Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 - Fatal编程技术网

Javascript 如何使用正则表达式将变量替换为计算字符串中的值?

Javascript 如何使用正则表达式将变量替换为计算字符串中的值?,javascript,regex,Javascript,Regex,我想创建一个带有变量的计算器,但是变量和计算是由用户定义的。我已经做了一个程序来获取所有这些东西,但是现在我想用它们在计算中的值来替换变量 为了确保不只是替换变量的一部分(例如,如果定义了'm'和'm1',我不想用'm'值替换'm1'中的m),我必须遵守以下条件: 在变量名之前,有一个左括号或一个操作 在变量名之后,有一个右括号或一个操作 当我进行计算时,空间将被删除(我还没有包括该功能) 为此,我编写了以下代码: for (var i = 0; i < names.length; i

我想创建一个带有变量的计算器,但是变量和计算是由用户定义的。我已经做了一个程序来获取所有这些东西,但是现在我想用它们在计算中的值来替换变量

为了确保不只是替换变量的一部分(例如,如果定义了'm'和'm1',我不想用'm'值替换'm1'中的m),我必须遵守以下条件:

  • 在变量名之前,有一个左括号或一个操作

  • 在变量名之后,有一个右括号或一个操作

当我进行计算时,空间将被删除(我还没有包括该功能)

为此,我编写了以下代码:

for (var i = 0; i < names.length; i++) 
{
    regex = "(\+|\-|\*|\/|\()" + names[i].value + "(\+|\-|\*|\/|\))"
    replacement = "$1" + values[i].value + "$2"
    calculation = calculation.replace(regex, replacement)
}
for(变量i=0;i
例如,对于变量“m”,我得到正则表达式:
(\+\\-\*\\*\/\\\())m(\+\\-\\*\*/\\)


问题是什么也找不到(我试过
(m+n+x)
)。我知道问题来自正则表达式,但我找不到它。

您的
regex
没有被视为正则表达式,而只是一个普通的
字符串

相反,将其转换为
新的RegExp()
。请注意,模式字符串中的单个
\
将被删除(因为这是标准的转义字符),因此需要对其进行“双重转义”

constnames=[{value:“a”},{value:“b”}];
常量值=[{value:1},{value:5}];
let calculation=“(a+b)”;
对于(var i=0;i控制台日志(计算)我只是忘了在计算开始和结束时写
。我已经逃过了
/
,但这并没有改变任何事情。我该如何修复它?(目前,我刚刚在PHP和C++中使用正则表达式,从未在JS中使用)