This pattern has 2 capturing groups with 2 flags (gi) and is broken down into 14 parts below.
Flags
gglobal - find all matches in the input, not just the first oneiignore case - letters match regardless of upper or lower case^Start-of-string anchor (or start of a line with the m flag)(?<user>Start of a named capturing group "user" - saves its match under that name[a-z0-9._%+-]A single character from the set: the range "a" to "z", the range "0" to "9", the character ".", the character "_", the character "%", the character "+", the character "-"+Repeated one or more times)End of the group@A literal "@" character(?<domain>Start of a named capturing group "domain" - saves its match under that name[a-z0-9.-]A single character from the set: the range "a" to "z", the range "0" to "9", the character ".", the character "-"+Repeated one or more times\.A literal "." character (the backslash removes its special meaning)[a-z]A single character from the set: the range "a" to "z"{2,}Repeated 2 or more times)End of the group$End-of-string anchor (or end of a line with the m flag)
正規表現の説明は、正規表現を取り、それを平易な英語に翻訳します。一度に 1 つの構成要素です。 ^(?<user>[a-z0-9._%+-]+)@... のような密な線で目を細める代わりに ラベル付きの内訳を取得します。この部分はアンカーです。これは名前付きキャプチャ グループです。この文字クラスは「小文字、数字、ドット、またはハイフン」を意味し、この量指定子は「1 回以上」を意味します。 シンボルの壁をチェックリストに変えて、読むことができます。
正規表現は、デザインがコンパクトであるため、強力ですが、レビューするのは困難です。 同じパターンは多くの方法で記述できます。また、1 つの迷子のバックスラッシュまたは貪欲な量指定子で意味が完全に変わります。 なじみのない正規表現を読む - コード レビュー、古い構成ファイル、またはスタック オーバーフローの回答 - 通常、エンジンを精神的にシミュレートすることを意味します。 このツールは、そのシミュレーションを実行し、結果を、入れ子になったグループやルックアラウンドなど、パターンの構造を反映した、順序付けられたインデントされたリストとして表示します。
コードが使用するのと同じ JavaScript 正規表現エンジンですべてがクライアント側で実行されるため、ここに表示されるフラグの動作と有効性は生産量と一致します。 パターンはアップロードされず、何もログに記録されず、ページが読み込まれると、ツールはオフラインで動作します。 理解しようとしている正規表現がプライベート コードベースから取得されているか、機密データ形式に一致する場合は重要です。
説明は、データが適切なパターンであるかどうかではなく、パターンが何を意味するかを説明します。それを確認するには、正規表現テスターで実際の入力に対して実行します。 ブラウザー独自のエンジンでコンパイルされるため、PCRE には存在するが ECMAScript には存在しない構成は、2 つの異なる方法で動作します。 A++、原子グループ (?>...)、再帰 (?R) などの所有量指定子は、エンジン自身のメッセージで完全に拒否されます。 より微妙なケースは \a と \z です。u フラグを指定しないと、JavaScript はそれらを ID エスケープとして扱います。したがって、PHP または Python からコピーされたパターンは、文字列境界ではなく、リテラル A または Z に一致するものとして説明されます。 (A+)+ のようなネストされた量指定子も通常は記述されます。破滅的なバックトラックは、構造内で目に見えるものではなく、入力のランタイム プロパティです。
周囲のスラッシュなしでパターンを入力してください - 式自体だけです。 [サンプルをロード] をクリックして、メールと一致する作業例から始めます。
パターンが使用するフラグ (G、I、M、S、U、Y、D) を切り替えます。 説明者は、各フラグが何をするかを報告し、そのフラグの組み合わせに対するパターンを検証します。
各トークンは、平易な英語の説明とともに順番にリストされています。 ネストされたグループはインデントされているため、パターンの構造が一目でわかります。
完全なプレーンテキスト内訳をコピーして、コード コメント、プル リクエスト ノート、またはドキュメントに貼り付けて、次のリーダーがデコードする必要がないようにします。
アンカー、文字クラス、量指定子、グループ、およびエスケープは、エンジンがそれらを読み取る順序で、説明付きの独自の行を取得します。
キャプチャ、非キャプチャ、名前付きグループ、および 4 つのルックアラウンド タイプすべてがラベル付けされ、インデントされているため、ネストされた構造は簡単に追跡できます。
G、I、M、S、U、Y、D の各フラグは、コンテキスト内でそれぞれ説明されているため、それらがどのように一致するかを理解するだけでなく、構文だけでなく、どのように一致するかを理解します。
パターンはブラウザー ネイティブの正規表現エンジンで検証されるため、それを使用する前に、正確なエラーで無効な式がキャッチされます。
Extract email addresses, URLs, phone numbers, and IPv4 addresses from any block of text. De-duplicate, sort, and copy the results. Runs client-side.
Find and replace text with a regular expression, using capture group backreferences like $1 and named groups, with full flag support
Test regular expressions against sample text with live match highlighting, capture groups, and full flag support
Build, test, and debug regular expressions with real-time matching and a comprehensive cheatsheet
0 comments
No comments yet. Be the first to share your thoughts!