首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript替换/正则表达式

JavaScript替换/正则表达式
EN

Stack Overflow用户
提问于 2009-07-22 00:56:49
回答 1查看 370.3K关注 0票数 132

给定此函数:

代码语言:javascript
复制
function Repeater(template) {

    var repeater = {

        markup: template,

        replace: function(pattern, value) {
            this.markup = this.markup.replace(pattern, value);
        }

    };

    return repeater;

};

如何让this.markup.replace()全局替换?问题就在这里。如果我这样使用它:

代码语言:javascript
复制
alert(new Repeater("$TEST_ONE $TEST_ONE").replace("$TEST_ONE", "foobar").markup);

警报的值是"foobar $TEST_ONE“。

如果我将Repeater更改为以下内容,则Chrome中没有任何内容被替换:

代码语言:javascript
复制
function Repeater(template) {

    var repeater = {

        markup: template,

        replace: function(pattern, value) {
            this.markup = this.markup.replace(new RegExp(pattern, "gm"), value);
        }

    };

    return repeater;

};

...and警报是$TEST_ONE $TEST_ONE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-22 01:02:49

您需要对任何RegExp字符进行双重转义(一次用于字符串中的斜杠,一次用于正则表达式):

代码语言:javascript
复制
  "$TESTONE $TESTONE".replace( new RegExp("\\$TESTONE","gm"),"foo")

否则,它会查找行尾和'TESTONE‘(它永远找不到)。

就我个人而言,出于这个原因,我不喜欢使用字符串构建regexp。所需的逃脱程度可能会导致你饮酒。但我相信其他人会有不同的感受,他们喜欢在编写正则表达式时饮酒。

票数 165
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1162529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档