JS内のでエスケープの違いについて
文字列リテラル
特殊文字(\n)や文字列の区切り文字(ダブルクオート等)を文字列の一部として使う際に使用
「"」: ダブルクオートを文字列として扱える「"\""」
「[」: エスケープ必要なし「"["」
「\」:バックスラッシュをエスケープする必要があるので「"\\"」
正規表現リテラル
正規表現の特殊文字(.、*、+、[])をリテラル文字として扱うためや、特殊文字(\n)を使う際に使用
「"」: エスケープ必要なし「/"/」
「[」: 正規表現として意味があるのでエスケープが必要「/\[/」
「\」:バックスラッシュをエスケープする必要があるので「/\\/」
文字列リテラルでの正規表現
RegExpコンストラクタを使用するときは文字列で正規表現パターンを渡せる
正規表現の特殊文字も文字列リテラルのルールに従って扱われる
そのため、文字列としてエスケープが必要なものは「\」、文字列でエスケープは必要ないが特殊文字のためエスケープしないといけない場合は「\\」と、バックスラッシュ自体を文字列としてエスケープする必要がある
「"」: 文字列としてはエスケープが必要だが正規表現としては必要ない「new RegExp("\"")」
「[」: 正規表現の特殊文字である為エスケープが必要、そのためのバックスラッシュも必要「new RegExp("\\[")」
「\」:エスケープ用バックスラッシュ「\\」+ エスケープ対象バックスラッシュ「\\」で「new RegExp("\\\\")」