0

例で説明されているように、何が悪いのですか:

form = 'some other [1][2] data ... data[Company][c_list][2][name_2] ... some other data';
form.replace(new RegExp('[c_list][2]', 'g'), '[c_list][1]');

得る:data[Company][c_list][2][name[c_list][1]]

必要:data[Company][c_list][1][name_2]

コードの何が問題になっていますか?

ありがとう

4

3 に答える 3

3

文字[]はセットを作成するために使用されるため、[c_list]正規表現では文字シーケンスと一致せず、、、、、、またはの[c_list]1つの文字と一致します。c_list

[文字と式をエスケープし]ます。\\パターンを文字列として記述しているので、を使用し\てパターンを入力する必要があります。

form.replace(new RegExp('\\[c_list\\]\\[2\\]', 'g'), '[c_list][1]');

\正規表現をリテラルとして記述し、文字をエスケープするためだけに使用することもできます。

form.replace(/\[c_list\]\[2\]/g, '[c_list][1]');
于 2013-03-20T09:40:05.133 に答える
1

正規表現[...]には、文字クラスを定義するという特別な意味があります。私はあなたが探していると思います

form.replace(new RegExp('\[c_list\]\[2\]', 'g'), '[c_list][1]');

ブラケットがエスケープされた場所。

于 2013-03-20T09:37:44.580 に答える
0

正規表現の括弧をエスケープします。

于 2013-03-20T09:39:00.220 に答える