尝试做我认为是相当简单的字符串替换,但结果比我想象的要复杂。
如果我有一个字符串
months + 3 + (startmonths * 3) + months - (months*7) + (monthsend*5)
为清楚起见,我正在解析的“公式”是用户提供的,并且可以包含用户可以提出的任何一系列变量名称和运算符 (+*/-) 和括号。我需要做的是首先用数字替换变量,然后评估结果表达式。,
我正在寻找的是如何使用 string.replace 函数替换所有出现的单词months,比如“12”。
所以希望函数的输出是
12 + 3 + (startmonths * 3) + 12 - (12*3) + (monthsend*5)"
似乎我需要一个正则表达式来避免替换像“startmonths”这样的字符串,我可能认为它实际上不可能在 javascript 正则表达式中执行,因为现代浏览器很少支持“lookbehinds”。
我尝试使用
[^A-Za-z9-9_](months)(?:[^A-Za-z0-9_])
,但它捕获了“月”之前和之后的字符,所以我不能将它用作 string.replace 的参数。
是否有一些解决方法,或者我是否必须忘记替换功能并使用查找和拼接等“手动”完成?