我想替換所有「?」到「%3F」,但它不起作用。 Firebug控制檯說:"SyntaxError: invalid regular expression flag %"
如何替換所有「?」使用javascript
我的代碼:
var q;
var replacer = new RegExp("?", "%3F");
q = (document.getElementById("q").value).replace(replacer, "");
我想替換所有「?」到「%3F」,但它不起作用。 Firebug控制檯說:"SyntaxError: invalid regular expression flag %"
如何替換所有「?」使用javascript
我的代碼:
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");
或者用文字這樣的正則表達式:如果你想逃避所有特殊URI
var replacer = /\?/g;
q = (document.getElementById("q").value).replace(replacer, "%3F");
你也應該考慮使用encodeURIComponent
(或可能encodeURI
)方法字符:
q = encodeURIComponent(document.getElementById("q").value);
試試這個:
"sample?".replace(/[?]/g,'%3F')
new RegExp
創建使用字符串作爲第二個參數的調節劑(g|i|m)
如果你想使用新的RegExp,那麼你需要這樣做,而不是new RegExp("[?]", "g");
這樣的:
var rg = new RegExp("[?]", "g");
"sample?".replace(rg,'%3F');
var find = "\\?";
var replacer = new RegExp(find, 'g');
q = (document.getElementById("q").value).replace(replacer, "%3F");
Eidt:忘記了「?」的前面?
這是我的不好,我忘了「\\」 – purist66 2014-09-04 22:20:38
var newelem = oldelem.split("?").join("%3F")
這將這樣的伎倆
如何
var q = encodeURIComponent(document.getElementById("q").value);
這聽起來像你編碼一個URL來傳遞數據,所以你可能真的想encodeURIComponent
。
encodeURIComponent('?') //=> "%3F"
這當然也適用於許多其他特殊字符。
encodeURIComponent('hello?foo#bar') //=> "hello%3Ffoo%23bar"
您的代碼使用graves而不是引號來代替'\'%3F \''。 – 2014-09-04 22:13:10
@RadGH謝謝剛纔注意到 – Dalorzo 2014-09-04 22:13:49