如何更换所有“?”使用javascript

时间:2014-09-04 22:05:06

标签: javascript regex replace replaceall

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

我的代码:

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

6 个答案:

答案 0 :(得分:3)

请改为尝试:

"sample?".replace(/[?]/g,'%3F')

new RegExp使用字符串作为修饰符(g|i|m)

的第二个参数创建正则表达式

如果您想使用新的RegExp,那么您需要这样做new RegExp("[?]", "g");,如下所示:

var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');

答案 1 :(得分:2)

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);

答案 2 :(得分:1)

听起来你要编码要在URL中传递的数据,所以你可能真的想要encodeURIComponent

encodeURIComponent('?') //=> "%3F"

当然,这也适用于许多其他特殊角色。

encodeURIComponent('hello?foo#bar') //=> "hello%3Ffoo%23bar"

答案 3 :(得分:0)

var find = "\\?";
var replacer = new RegExp(find, 'g');

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

编辑:忘记" \\"在"?"

之前

答案 4 :(得分:0)

var newelem = oldelem.split("?").join("%3F")

这样就可以了解

答案 5 :(得分:0)

怎么样

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