javascript - 用javascript替换双花括号

标签 javascript regex

我正在尝试对 String 对象进行原型(prototype)设计,使其具有 replaceWith 函数,使我能够在不使用正则表达式的情况下直接替换

String.prototype.replaceWith = function(f, t) {
    var regExp = new RegExp("[" + f + "]", "g");
    return this.replace(regExp, t);
};

例如,当我在这个字符串 {{Hello}} 中测试我的代码时,我发现替换双花括号是一个问题

测试

'{{Hello}}'.replaceWith('{{','<<').replaceWith('}}','>>');

结果是

 "<<<<Hello>>>>"

应该是什么时候

"<<Hello>>"

我的脚本有什么问题??

谢谢你的帮助

最佳答案

[{{][{] 完全相同这与 { 相同在正则表达式中。方括号表示匹配该类中任何字符之一的字符类。你应该改变:

"[" + f + "]"

收件人:

f

所以你有:

String.prototype.replaceWith = function(f, t) {
    var regExp = new RegExp(f, "g");
    return this.replace(regExp, t);
};

正如 Marlin 指出的那样,它与 String.prototype.replace 具有相同的功能除了你不需要添加 g修饰符,在我心目中'{{Hello}}'.replace(/{{/g, '<<');'{{Hello}}'.replaceWith('{{', '<<'); 更简洁易懂。 .

关于javascript - 用javascript替换双花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455555/

相关文章:

javascript - 有没有一种简单的方法使用javascript替换来删除标签内的内容

regex - 使用 vim 正则表达式对数字进行通信

javascript - 迷失在迷雾中 : actions in redux/reactjs

javascript - CKEditor 内联代码片段突出显示

javascript - 如何选择响应式 jCarousel 上可见项目的数量

java - 为什么 String.replaceAll() 不适用于此字符串?

Javascript + JsDoc : How to document new ES6 datatypes like map?

javascript - 访问 JSON 数据 - 未定义

objective-c - Objective-C 中的正则表达式语法

javascript - 搜索字符串并捕获特定 HTML 属性的值