JavaScript: "Dynamic"反向引用正则表达式替换

标签 javascript regex replace

我想进行如下替换:

var txt = "Some text containing $_variable1 and with $_variable2 inside of it as well.";
var rx = /(\$_[a-z]+)/g

var $_variable1 = "A CAT";
var $_variable2 = "A HOTDOG";

var replaced_txt = txt.replace(rx, $1);

我希望 replaced_txt 等于“...包含 CAT 和 HOTDOG ins...”,但迄今为止我发现的实现此目的的唯一方法是:

var replaced_txt = txt.replace(rx, function($1){return eval($1)});

我有一种感觉,这不是最优雅的解决方案,不是吗?

我最好避免使用eval()

我很感激对此的任何想法!

/C

最佳答案

你可以这样做:

var values = {
  '$_variable1': 'A CAT',
  '$_variable2': 'A HOTDOG'
};
var replaced_txt = txt.replace(rx, function(_, varName) {
  return values[varName] ? values[varName] : '<unknown variable: ' + varName + '>';
});

关于JavaScript: "Dynamic"反向引用正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327053/

相关文章:

javascript - 脏矩形 - 清除的矩形不再出现

javascript - 使用 javascript 查找搜索词(片段)周围的单词

jquery - 正则表达式/替换问题如何在查询中搜索文本时删除

javascript - 需要帮助在 Jquery 中创建父/子结构

在 CSS 转换完成之前执行的 Javascript

regex - 正则表达式以匹配重复的辅音

dataframe - pyspark:计算连续的 1/0 的数量,并在条纹太短/太长时更改它们

java字符串替换字符

javascript - 在 Vanilla JavaScript 中,当有多个模型/ View / Controller 时,我该如何构建我的应用程序?

c# - C#中匹配字符串