我要替换所有的“?”到“%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);