JavaScriptでUnicode文字の文字列リテラルを検出するこの正規表現が見つかりました。文字列を検出するための正規表現の理解
'"'("\\x"[a-fA-F0-9]{2}|"\\u"[a-fA-F0-9]{4}|"\\"[^xu]|[^"\n\\])*'"'
が、私は
-
の役割と必要性を理解することができませんでし
"\\x"[a-fA-F0-9]{2}
"\\"[^xu]|[^"\n\\]
文字。
JavaScriptでUnicode文字の文字列リテラルを検出するこの正規表現が見つかりました。文字列を検出するための正規表現の理解
'"'("\\x"[a-fA-F0-9]{2}|"\\u"[a-fA-F0-9]{4}|"\\"[^xu]|[^"\n\\])*'"'
が、私は
"\\x"[a-fA-F0-9]{2}
"\\"[^xu]|[^"\n\\]
文字。
"\\x"[a-fA-F0-9]{2}
これは、リテラル\x
に続いて、16進数のグループから2文字です。
コードポイント0-255,\x00
-の短縮形文字エスケープに一致します。これらはJavaScriptの文字列リテラルで有効ですが、代わりに\u0000
- \u00FF
を使用する必要があるJSONにはありません。 x
またはu
を除いて、1つの以上の文字が続く
バックスラッシュ:
"\\"[^xu]|[^"{esc}\n]
これは、のいずれかに一致します。 \xNN
と\uNNNN
の有効なケースは、前の|
-separate句で取得されました。これは、\uqX
のような無効な構文とのマッチングを避けるためです。
"
または改行を除くすべてのもの。他のエスケープ文字を除外することになっている可能性もありますが、これは私が推測しているのは{esc}
という意味です。これは正規表現の構文の一部ではありませんが、拡張正規表現や正規表現の上部にあるテンプレートにすることができます。そうでない場合、[^"{esc}\n]
は、"
,{
,e
,s
,c
,}
または改行以外の文字を意味します。これは間違っています。
特に、「何か」を取り上げ、最後の句は、\
自体を排除するものではない、あなたはまだそれが両方JSONで無効であっても、あなたの文字列に\uqX
を持っているし、試合を得ることができるようにし、 JavaScript。
'{esc}'は、コードの書式設定を使用していなかったため、バックスラッシュが表示されないため、OPが行ったように見えます。私はバックスラッシュを彼らが所属するところに戻します。 –
こんにちはRohitと歓迎StackOverflow!あなたの質問を編集して元の正規表現をそのまま貼り付け、 '{}'(コード)ボタンを使ってコードとして書式を設定する必要があると思います。バックスラッシュを自分で挿入してマークダウンパーサーを推測しようとすると、私たちがあなたを助けてくれることになります。また、あなたの正規表現でそれらの引用符について何か間違って見える。この質問は残念なことに、現在の状態ではほとんど答えることができません。このページの右上にあるよくある質問を読むこともできます。それはあなたを始めるのを助けるかもしれません。 –
@TimPietzckerが提案してくれてありがとう、私は元の質問を編集しました。 私はそれらを個別に理解しますが、組み合わせて、私を混乱させています。 – Rohit
これらの引用符はすべて実際に元の正規表現にありますか?私はそれを非常に疑う。 –