给定这个函数:
function Repeater(template) {
var repeater = {
markup: template,
replace: function(pattern, value) {
this.markup = this.markup.replace(pattern, value);
}
};
return repeater;
};
我该如何制作this.markup.replace()
全局替换?问题就在这里。如果我像这样使用它:
alert(new Repeater("$TEST_ONE $TEST_ONE").replace("$TEST_ONE", "foobar").markup);
警报的值为“foobar $TEST_ONE”。
如果我改变Repeater
到以下内容,然后在 Chrome 中替换任何内容:
function Repeater(template) {
var repeater = {
markup: template,
replace: function(pattern, value) {
this.markup = this.markup.replace(new RegExp(pattern, "gm"), value);
}
};
return repeater;
};
...警报是$TEST_ONE $TEST_ONE
.
您需要对任何正则表达式字符进行两次转义(一次用于字符串中的斜杠,一次用于正则表达式):
"$TESTONE $TESTONE".replace( new RegExp("\\$TESTONE","gm"),"foo")
否则,它会查找行尾和“TESTONE”(它永远找不到)。
就我个人而言,出于这个原因,我不太喜欢使用字符串构建正则表达式。所需的逃避程度可能会导致你酗酒。我确信其他人有不同的感受,并且喜欢在编写正则表达式时喝酒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)