我有一个字符串和消息:
str = "Test $0 $1 $2";
message = "Hi %2 Hello %2" ;
现在我想将所有%2
替换为str
。我正在使用如下的RegExp,
message = message.replace(new RegExp("%2" , "g"), str);
它在Chrome和Firefox中运行良好,消息按预期发布
message = "Hi Test $0 $1 $2 Hello $0 $1 $2"
但是在Internet Explorer 11中,它为
之类的消息提供了不正确的值message = "Hi Test %2 $1 $2 Hello %2 $1 $2"
在IE11中,$0
(str的子字符串)将替换为%2
。任何人都可以就此提出建议。
答案 0 :(得分:2)
在替换字符串(String#replace
的第二个参数)中,美元符号$
提供特殊功能,因此必须使用前面的美元符号对每个字符进行转义。因此,您的str
应为:
var str = 'Test $$0 $$1 $$2'
我不认为美元符号的确切功能目前与您太相关,但如果您想了解更多有关其服务目的的信息,可以访问this documentation page on the Mozilla Development Network。
<强>段:强>
var str = "Test $$0 $$1 $$2",
message = "Hi %2 Hello %2"
message = message.replace(/%2/g, str)
console.log(message)
答案 1 :(得分:0)
试试这个,它会帮助你
var str = 'Test $0 $1 $2';
message = "Hi %2 Hello %2";
var regx = new RegExp("%2", "g");
if (str.indexOf("$") > 0) {
var val = str[str.indexOf("$") + 1];
if (val.trim() != "" && val.trim() != "$") {
var rex = new RegExp(val, "g");
str = str.replace(rex, "$$" + val);
}
}
message = message.replace(new RegExp("%2", "g"), str);
alert(message);
&#13;