これが何を意味するのか理解するのに苦労しています:/[\[]/
なぜ 2 つの replace ステートメントがあるのですか?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
これが何を意味するのか理解するのに苦労しています:/[\[]/
なぜ 2 つの replace ステートメントがあるのですか?
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
/[\[]/
正規表現リテラルです。
[
最初の置換では、2 番目のby\[
と symmetric を置き換えています。
多くの(ほとんど役に立たない)エスケープメントのために奇妙に見えます :[
は正規表現で\
エスケープ[
され、文字列リテラルでエスケープされます。
最初の正規表現は次のように分析できます。
/
: 正規表現の開始[
: 文字セットのオープニング\[
:[
文字 (セット内にあるため役に立たないエスケープ付き)]
: 文字セットの終了/
: 正規表現の終了これらの正規表現は私には冗長に見えます。そのセットに文字が 1 つしかない場合、文字セットは必要ありません。[
また、文字列リテラルでエスケープする必要はありません。
あなたはできたかもしれません
name = name.replace(/\[/, "\\[").replace(/\]/, "\\]");
例えば
'a [ b c ] d [ e ]'.replace(/\[/, "\\[").replace(/\]/, "\\]")
与える
"a \[ b c \] d [ e ]"
g
修飾子がないため、 への呼び出しごとに 1 つの置換しか行っていないことに注意してください。replace
これはおそらく目標ではないため、
name = name.replace(/\[/g, "\\[").replace(/\]/g, "\\]");
つまり、正規表現を使用しています。正規表現に慣れていない場合は、最初に正規表現を学習することをお勧めします。
これは実際には Javascript に固有のものではありません。正規表現はほとんどのプログラミング言語で使用されていますが、わずかな違いがあります。正規表現を調べてみてください。知っておくと非常に便利です!
たぶん、例でどのように機能するかがわかります
var name = "[[[[[]]]]]]]";
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
console.log(name);
その結果、あなたは
\[[[[[\]]]]]]]
この正規表現は、最初に出現し[
た to\[
と最初に出現]
したto を置き換えます\]