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()的情况下,直接从数组中替换值。我总是使用以下站点来构建正则表达式:
我总是使用以下站点来构建正则表达式:
正是我的想法。快一分钟:)正是我的想法。快一分钟:)