My code only replaces the first match, ignoring the flags (global and multi line). What am I doing wrong?

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

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

As you can see, my placeholders have this format: {0}, {1} etc

如您所见,我的占位符有这种格式:{0}, {1}等等。

1 个解决方案

#1


3

According to MDN, the flags are non-standard for the normal .replace() method. Instead, you can pass in a RegExp with the same result.

根据MDN,旗帜是正常的非标准的。replace()方法。相反,您可以在RegExp中传递相同的结果。

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

Since curly braces have special significance in regular expressions, you have to escape them.

由于花括号在正则表达式中具有特殊的意义,所以必须要避免它们。

更多相关文章

  1. Safari / Chrome中的全局控制台对象被重置
  2. JavaScript - 检查是否在全局上下文中
  3. 理解javascript全局命名空间和闭包
  4. 为什么括号用于包装javascript函数调用? [重复]
  5. 【JavaScript】中两个小括号 ()() 是什么意思
  6. JavaScript声明全局变量三种方式的异同
  7. javascript变量:全局?还是局部?这个得注意
  8. 如何用位于括号外的逗号分隔字符串?
  9. Python NameError:全局名称“Form”没有定义pyqt

随机推荐

  1. 补间动画--缩放动画XML
  2. Android系统框架概述
  3. Android打开activity的时候,设置editText
  4. 鉴客 Android中如何生成带圆角的Bitmap图
  5. 安卓控件属性
  6. Android EditText的设置以及软键盘的各种
  7. Android中TextView限制行数及末尾已省略
  8. android开机动画bootanimation
  9. Android之TextView属性大全
  10. android 通知Notification的使用小实例(振