Javascript - 从字符串中替换值位于特定字符之间的子字符串

标签 javascript regex replace

所以我有这个字符串,它代表一个数学表达式:

(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/

相关文章:

特定格式的文件的 JavaScript 正则表达式部分

regex - phpstorm 将 array() 表示法替换为 [ ] 短语法

regex - Vim用另一个相同长度的单词列表替换单词列表?

unix - 用 sed 替换 Inline,但也打印输出

javascript - 在 jQuery 中获取文本框值

javascript - 这个 JavaScript 代码块是什么意思?

javascript - 为什么我的函数在尝试从数组返回最大数字时返回未定义?

javascript - 如何用 JSON 对象中的图像标签替换图像 URL?

javascript - 如何在javascript中用相同长度的空格替换找到的正则表达式子字符串?

javascript - Javascript 中函数绑定(bind)和闭包的区别?