Javascript 字符串替换为动态创建的模式

标签 javascript str-replace

我的代码仅替换第一个匹配项,忽略标志(全局和多行)。我做错了什么?

for (var i = 0; i < values.length; i++) {
        template = template.replace('{' + i + '}', values[i].toString().trim(), 'gm');
    }

如您所见,我的占位符采用以下格式:{0}、{1} 等

最佳答案

According to MDN ,这些标志对于正常的 .replace() 方法来说是非标准的。相反,您可以传入具有相同结果的 RegExp。

template.replace(new RegExp('\\{' + i + '\\}', 'gm'),
    values[i].toString().trim());

由于大括号在正则表达式中具有特殊意义,因此必须对它们进行转义。

关于Javascript 字符串替换为动态创建的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602337/

相关文章:

javascript - 需要居中整个导航栏,包括子菜单,找不到正确的代码。我的 JavaScript 搞砸了吗?

javascript - 如何为 Prepack 正确定义 Node.js 函数和属性?

javascript - 如何在sap ui5中将组合框默认值设置为登录用户ID的 session

javascript - Node.js 需要回调函数,但得到了一个 [object Object]

php - 如何在 PHP 中替换字符串中的单个单词?

javascript - 正则表达式匹配特定长度单词中的字符

PHP "str_replace"在某些情况下无法正常工作?

javascript - $.post 只在有警报的情况下工作

javascript - RegExp - 替换引号不起作用

php - 来自数组的奇怪 str_replace 输出