],[
置換したい文字列が複数回出現する文字列を持っています]@[
どう頑張っても正解にたどり着けません。
var find = '],[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
動作しません
mytext = mytext.replace(/],[/g,']@[');
動作しません
私が間違っているところはありますか?
],[
置換したい文字列が複数回出現する文字列を持っています]@[
どう頑張っても正解にたどり着けません。
var find = '],[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
動作しません
mytext = mytext.replace(/],[/g,']@[');
動作しません
私が間違っているところはありますか?
答えは、[ と ] は正規表現のコンテキストでは特殊文字であり、 \ を使用してエスケープする必要があります。以下のコード:
var regex= /\],\[/g
var result = mytext.replace(regex, ']@[')
次の jsFiddle をチェックしてください: http://jsfiddle.net/JspRR/4/
ご覧のとおり、重要な部分は、正規表現を作成するときに ] と [ をエスケープすることです。
Javascript 正規表現の短縮形を使用したくない場合でも、同じエスケープが必要です。ただし、その場合、\ 文字自体をエスケープする必要があります ( ... 単独で!)
var regex = new RegExp("\\],\\[", "g");
var result = mytext.replace(regex, ']@[')
これを試して:-
mytext.replace(/\],\[/g, ']@[')
あなたの例が機能しない理由は、通常、角括弧は文字クラスを表すため、そのようにエスケープする必要があるためです
var find = '\\],\\[';
var regex = new RegExp(find, "g");
mytext.replace(regex, ']@[')
正規表現リテラルも使用できます
mytext.replace(/\],\[/g, "]@[");
角括弧は、正規表現内の特殊文字です。文字セットを定義するために使用されます。
正規表現で角括弧を一致させたい場合は、バックスラッシュを使用してエスケープする必要があります。
"[1],[2],[3]".replace(/\],\[/g, "]@[");
または、組み込みのコンストラクターを使用する場合:
"[1],[2],[3]".replace(new RegExp("\\],\\[", "g"), "]@[");
どちらの場合もg
、正規表現が検索された文字列のすべての出現に一致できるように、フラグを使用する必要があります。
var str = "[1],[2],[3]";
console.log(str.replace(/\],\[/g, "]@["));
console.log(str.replace(new RegExp("\\],\\[", "g"), "]@["));
var str = "[1],[2],[3]";
var replaced = str.replace('],[', ']@[');