所以我有这个字符串,它代表一个数学表达式:
(timezone*timelapse)-time
每个单词代表输入字段中的一个 id,目前我只是用稍后评估的原型(prototype) js 表达式替换每个单词:
$('timezone').value,
$('timelapse').value
问题出在最后一个 id 上。当我到达那里时,我的表情现在是这样的:
($('timezone').value*$('timelapse').value)-time
因此,当我搜索单词 time
并将其替换为 $('time').value
时,它将影响前两个值并弄乱最终表达式。
我的问题是:如何替换此处正确的单词?
由于这是一个数学表达式,因此该单词可能应该位于任何数学符号之间,如下所示:
(+-/* **word** +-/*)
[empty space] **word** +-/*)
(*-/* **word** [empty space]
还是不?
最佳答案
您可以用一个替换来替换所有内容,这样就不会出现双重替换问题:
exp = exp.replace(/([A-Za-z]+)/g, function(m){
return "$('" + m + "').value";
});
如果是没有任何逻辑的直接替换,您也可以在替换字符串中使用捕获的值,如 Cerbrus 建议的那样:
exp = exp.replace(/([A-Za-z]+)/g, "$('$1').value");
关于Javascript - 从字符串中替换值位于特定字符之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894678/