1

私はこの文字列を持っています:

var value = recordsArray_f006b490[]=1&recordsArray_9715b841[]=1&recordsArray_afb085e2[]=1&recordsArray_fc542e23[]=1&recordsArray_19490084[]=1&recordsArray_615a5055[]=1&recordsArray_32841aa6[]=1&recordsArray_a02a35c7[]=1&recordsArray_d32b5b88[]=1&recordsArray_d32d5339[]=1&recordsArray_56c2b8e10[]=1&recordsArray_8ce9f4211[]=1&recordsArray_5a87afc12[]=1&recordsArray_2b13c0113[]=1&recordsArray_afb085e14[]=1&recordsArray_51db9f216[]=1&recordsArray_2a7470415[]=1&recordsArray_d51057a17[]=1&recordsArray_b274ee918[]=1&recordsArray_d0812dd19[]=1&recordsArray_b1ede8920[]=1&recordsArray_9d76ae821[]=1&recordsArray_0ae779d22[]=1&recordsArray_871777923[]=1&recordsArray_9e22c9f24[]=220236&recordsArray_787c57e25[]=220236&recordsArray_499e25726[]=1&recordsArray_a0600da27[]=220236&recordsArray_9ef1fca28[]=220236&recordsArray_67eee1929[]=220236&recordsArray_24c3a0b30[]=220236&recordsArray_5d2090831[]=220236

そして、 "[] ="を"_"に置き換えたいので、次のjavascriptコードがあります。

var regex = new RegExp("[]=", "g");
alert(value.replace(regex, "_"));

しかし、それは何も変わりません、どうすればそれを行うことができますか?ありがとう!

4

5 に答える 5

4

最初のエスケープを使用して、文字クラス[を定義していないことを示します。

 var regex = new RegExp("\\[]=", "g");
于 2012-10-10T15:44:58.227 に答える
2

角かっこは正規表現で予約されています。マッチングのためにそれらをエスケープする必要があります

var regex = new RegExp("\\[\\]=", "g");
于 2012-10-10T15:44:10.247 に答える
2

角かっこは特別な意味があるため、角かっこをエスケープします。

var regex = new RegExp("\\[\\]=", "g");
于 2012-10-10T15:44:24.677 に答える
2

他の人が指摘しているように、正規表現では特別な意味があるため、角かっこはエスケープする必要があります。また、これを行うための最も明確で簡潔な方法は、JavaScriptの正規表現リテラル表記を使用することです。

 var regex = /\[]=/g;

[また、開き角かっこをエスケープするだけで済みます。閉じ角かっこ(文字)は、文字クラスの外側でのみ特別な意味を持つのと同様に、文字クラス]の内側でのみ特別な意味を持ちます。[

于 2012-10-10T15:48:38.683 に答える
0

正規表現に角かっこを含めることはできません。これに使用\\[します。

于 2012-10-10T15:45:41.620 に答える