0

"anda文字を\"andに置き換える次のスクリプトがあり\aます。

'"replace'.replace(/"|a/g, "\\$&");

結果は次のとおりです。\"repl\ace

今、必要なのは\(エスケープ文字) をに置き換えること\\です。SyntaxError: Invalid regular expression: missing /しかし、次のコードを試すと、 Chrome コンソールで例外が発生して失敗しました。

'"re\place'.replace(/"|a|\/g, "\\$&");

正規表現 (Javascript) でエスケープ文字を置き換えるための可能な回避策は何ですか?

アップデート

pblm を単純化すると、なぜ 'rep\lace'.toString() の結果が 'rep\lace' ではなく 'replace' になるのですか?

同じことに関して、私はこれらのコードを試しました、

  1. "re\nlace".toString();結果reの改行lace
  2. "re\xlace".toString();結果 SyntaxError: Unexpected token ILLEGAL。\x は実行可能でないため、b の可能性があります。

Javascriptが文字列値を実行していると思います。しかし、何のために?

4

3 に答える 3

1
'"replace'.replace(/"|a|\\/g, "\\$&");
于 2012-09-23T08:04:37.813 に答える
1

最後\は最後/をエスケープします。正規表現を次のようにするには、エスケープする必要があります。

'"replace'.replace(/"|a|\\/g, "\\$&");
于 2012-09-23T08:04:46.997 に答える
0

問題#1正規​​表現でエスケープ
する\必要があります:

"re\place".replace(/a|\\/g,"\\$&");
repl\ace

問題#2
これ"\"は直接入力された結果になります""-\再びエスケープする必要があります:

"re\\place".replace(/a|\\/g,"\\$&");
re\\pl\ace

重要なのは、次のように\言うことです。ここに特別な文字があります。
\n->改行
\\-> \
\x->エラー、xが他の文字として定義されていないため

言い換えれ
ば、入力したい場合"re\nlace".toString();は、文字列内に入力する必要があります"re\\nlace".toString();

多分これはあなたを助けます:http://en.wikipedia.org/wiki/Escape_character

于 2012-09-23T08:05:29.453 に答える