我要替换所有的“?”到“%3F”,但它不起作用。
Firebug控制台显示:"SyntaxError: invalid regular expression flag %"

我的代码:

var q;
var replacer = new RegExp("?", "%3F");
q = (document.getElementById("q").value).replace(replacer, "");

最佳答案

RegExp构造函数的第二个参数是一个字符串,其中包含要应用于表达式的标志。使用全局(g)标志替换所有实例。另外,?是正则表达式中的特殊字符,因此您必须使用\对其进行转义。

尝试这个:

var replacer = new RegExp("\\?", "g");
q = (document.getElementById("q").value).replace(replacer, "%3F");


或使用像这样的正则表达式文字:

var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");


如果要转义所有特殊的URI字符,还应该考虑使用encodeURIComponent(或者可能是encodeURI)方法:

q = encodeURIComponent(document.getElementById("q").value);

10-06 03:21