繁体   English   中英

JavaScript中的RegEx替换

[英]RegEx Replacement in JavaScript

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

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

更全面的观点:

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.';

如果有人可以提供RegEx来处理替代品,我将不胜感激。 可能会有多个相同令牌的实例,但是我已经使用以下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()? 检查此页面以供参考: http : //www.diveintojavascript.com/projects/javascript-sprintf

在字符串中有占位符,而不是替换标记,这些占位符会自动替换为值,对于vsprintf()而言,则直接从数组中替换值。

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

http://gskinner.com/RegExr/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM