Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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_Jquery_Regex - Fatal编程技术网

JavaScript中的正则表达式替换

JavaScript中的正则表达式替换,javascript,jquery,regex,Javascript,Jquery,Regex,我有一段代码可以替换字符串中的标记。我将替换值存储在数组中 本质上,我想分析字符串并用数组键替换它。例如,我想用replacements['my\u forname']替换[my\u forname]的任何实例。数组中的键与字符串中方括号之间的键相同 更全面的观点: replacements['my_forename'] = 'Ben'; replacements['my_surname'] = 'Major'; replacements['my_verbose_name'] = 'Ben M

我有一段代码可以替换字符串中的标记。我将替换值存储在数组中

本质上,我想分析字符串并用数组键替换它。例如,我想用
replacements['my\u forname']
替换
[my\u forname]
的任何实例。数组中的键与字符串中方括号之间的键相同

更全面的观点:

replacements['my_forename'] = 'Ben';
replacements['my_surname']  = 'Major';
replacements['my_verbose_name'] = 'Ben Major';

// The following is the input string:
// 'My name is [my_forename] [my_surname], or [my_verbose_name].';
// And it should output:
// 'My name is Ben Major, or Ben Major.';
如果有人能提供一个正则表达式来处理替换,我将不胜感激。同一令牌可能有多个实例,但我已使用以下
replaceAll
函数处理了该问题:

String.prototype.replaceAll = function(needle, replacement)
{
    return this.replace(new RegExp(needle, 'g'), replacement);
}
但这会导致最大堆栈限制,因为从任何包含
[]
的对象创建
RegExp
对象都会导致问题

任何帮助都将受到感激

function tmpl(s, o) {
    return s.replace(/\[(.+?)\]/g, function (_, k) { return o[k] })
}
给你

以下是。

为什么不使用sprintf()或vsprintf()?查看本页以获取参考:

字符串中的占位符不是替换标记,而是自动替换为值,或者在vsprintf()的情况下,直接从数组中替换值。

为什么不使用sprintf()或vsprintf()?查看本页以获取参考:


在字符串中有占位符而不是替换令牌,占位符会自动替换为值,或者在vsprintf()的情况下,直接从数组中替换值。

我总是使用以下站点来构建正则表达式:


我总是使用以下站点来构建正则表达式:


正是我的想法。快一分钟:)正是我的想法。快一分钟:)