如何替换所有的&引用;使用javascript

如何替换所有的&引用;使用javascript,javascript,regex,replace,replaceall,Javascript,Regex,Replace,Replaceall,我想将所有“?”替换为“%3F”,但它不起作用。 Firebug控制台显示:“SyntaxError:无效正则表达式标志%” 我的代码: var q; var replacer = new RegExp("?", "%3F"); q = (document.getElementById("q").value).replace(replacer, ""); 请尝试以下方法: "sample?".replace(/[?]/g,'%3F') newregexp使用字符串作为第二个参数创建正则表达式

我想将所有“?”替换为“%3F”,但它不起作用。 Firebug控制台显示:
“SyntaxError:无效正则表达式标志%”

我的代码:

var q;
var replacer = new RegExp("?", "%3F");
q = (document.getElementById("q").value).replace(replacer, "");
请尝试以下方法:

"sample?".replace(/[?]/g,'%3F')
newregexp
使用字符串作为第二个参数创建正则表达式修饰符
(g|i|m)

如果您想使用新的RegExp,那么您需要改为使用
newregexp(“[?]”,“g”)如下所示:

var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");
请尝试以下方法:

"sample?".replace(/[?]/g,'%3F')
newregexp
使用字符串作为第二个参数创建正则表达式修饰符
(g|i|m)

如果您想使用新的RegExp,那么您需要改为使用
newregexp(“[?]”,“g”)如下所示:

var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");

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

试试这个:

var replacer = new RegExp("\\?", "g");
q = (document.getElementById("q").value).replace(replacer, "%3F");
或者使用如下的正则表达式:

var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");

您还应该考虑使用(或可能)方法,如果您想逃离所有特殊URI字符:

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

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

试试这个:

var replacer = new RegExp("\\?", "g");
q = (document.getElementById("q").value).replace(replacer, "%3F");
或者使用如下的正则表达式:

var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");

您还应该考虑使用(或可能)方法,如果您想逃离所有特殊URI字符:

q = encodeURIComponent(document.getElementById("q").value);
艾德:忘记了“?”前面的“\\”

艾德:忘记了“?”前面的“\\”

这样就行了

这样就可以了,怎么样

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

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

听起来您正在对要在URL中传递的数据进行编码,因此您可能实际上需要
encodeURIComponent

encodeURIComponent('?') //=> "%3F"
当然,这也适用于许多其他特殊角色

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

听起来您正在对要在URL中传递的数据进行编码,因此您可能实际上需要
encodeURIComponent

encodeURIComponent('?') //=> "%3F"
当然,这也适用于许多其他特殊角色

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

你的代码使用graves而不是引号来表示
`%3F`
。你的代码使用graves而不是引号来表示
`%3F`
。那是我的错我忘了“\\”那是我的错我忘了“\\”