Javascript 在 IE11 中替换为 $0 的正则表达式错误
Javascript replace with regular expression error for $0 in IE11
我有一个字符串和消息:
str = "Test [=11=] ";
message = "Hi %2 Hello %2" ;
现在我想将消息中的所有%2
替换为str
。我正在使用 RegExp,如下所示,
message = message.replace(new RegExp("%2" , "g"), str);
它在 Chrome 和 Firefox 中运行良好,消息按预期发送
message = "Hi Test [=13=] Hello [=13=] "
但在 Internet Explorer 11 中,它为
之类的消息提供了不正确的值
message = "Hi Test %2 Hello %2 "
在 IE11 中,[=17=]
(str 的子字符串)正在替换为 %2
。任何人都可以就此向我提出建议。
在替换字符串(String#replace
的第二个参数)中,美元符号 $
具有特殊功能,因此每个字符串都必须使用前面的美元符号进行转义。因此,您的 str
应该是:
var str = 'Test $[=10=] $ $'
我认为目前美元符号的确切功能与您不太相关,但如果您想了解更多关于它所服务的用途的信息,可以访问 this documentation page on the Mozilla Development Network。
片段:
var str = "Test $[=11=] $ $",
message = "Hi %2 Hello %2"
message = message.replace(/%2/g, str)
console.log(message)
试试这个,它会帮助你
var str = 'Test [=10=] ';
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);
我有一个字符串和消息:
str = "Test [=11=] ";
message = "Hi %2 Hello %2" ;
现在我想将消息中的所有%2
替换为str
。我正在使用 RegExp,如下所示,
message = message.replace(new RegExp("%2" , "g"), str);
它在 Chrome 和 Firefox 中运行良好,消息按预期发送
message = "Hi Test [=13=] Hello [=13=] "
但在 Internet Explorer 11 中,它为
之类的消息提供了不正确的值message = "Hi Test %2 Hello %2 "
在 IE11 中,[=17=]
(str 的子字符串)正在替换为 %2
。任何人都可以就此向我提出建议。
在替换字符串(String#replace
的第二个参数)中,美元符号 $
具有特殊功能,因此每个字符串都必须使用前面的美元符号进行转义。因此,您的 str
应该是:
var str = 'Test $[=10=] $ $'
我认为目前美元符号的确切功能与您不太相关,但如果您想了解更多关于它所服务的用途的信息,可以访问 this documentation page on the Mozilla Development Network。
片段:
var str = "Test $[=11=] $ $",
message = "Hi %2 Hello %2"
message = message.replace(/%2/g, str)
console.log(message)
试试这个,它会帮助你
var str = 'Test [=10=] ';
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);