開発者ツール / 20
正規表現トークン解説 & パターン解析
JavaScript正規表現をトークンごとに分解し、キャプチャグループ・文字クラス・量指定子などを平易な英語で解説します。
正規表現トークン解説 & パターン解析: TOEAは正規表現パターンを個々のASTトークンにパースし、各要素について平易な英語の説明を生成します。 サーバーへのファイルアップロードは一切なく、100%ブラウザ内でローカル実行します。
- カテゴリ
- 開発者ツール
- 実行回数
- ブラウザ内で
- コスト
- 無料 · 登録不要
- 提供状況
- すぐに使えます
完全にブラウザ内で実行します
パターントークンの解説
| トークン | カテゴリ | 解説 |
|---|---|---|
/i | 正規表現フラグ | 有効なフラグ: 大文字と小文字を区別しない一致。 |
^ | アンカー | 文字列または行の先頭に一致します。 |
( | グループ | キャプチャグループ#1を開始します。 |
[a-z0-9_\.-] | 文字クラス | 文字セット[a-z0-9_\.-]内の任意の1文字に一致します。 |
+ | 量指定子 | 直前のトークンに1回以上貪欲に一致します。 |
) | グループ | キャプチャグループまたは非キャプチャグループを終了します。 |
@ | リテラル | リテラル文字「@」に一致します。 |
( | グループ | キャプチャグループ#2を開始します。 |
[\da-z\.-] | 文字クラス | 文字セット[\da-z\.-]内の任意の1文字に一致します。 |
+ | 量指定子 | 直前のトークンに1回以上貪欲に一致します。 |
) | グループ | キャプチャグループまたは非キャプチャグループを終了します。 |
\. | 文字クラス / エスケープ | エスケープされた文字「.」 |
( | グループ | キャプチャグループ#3を開始します。 |
[a-z\.] | 文字クラス | 文字セット[a-z\.]内の任意の1文字に一致します。 |
{2,6} | 量指定子の範囲 | 明示的な範囲指定{2,6}に一致します。 |
) | グループ | キャプチャグループまたは非キャプチャグループを終了します。 |
$ | アンカー | 文字列または行の末尾に一致します。 |
疑問符のさまざまな役割
?の意味は位置によって変わります。文字やグループの後では、その文字やグループを省略可能にします。colou?rがその例です。別の量指定子の後では、その量指定子を遅延型にし、可能な限り少なくマッチさせます。<.+?>は最初の>で止まりますが、<.+>は行内の最後の>まで進みます。グループの先頭では特殊構文を導入します。(?:…)はキャプチャせずにグループ化し、(?=…)と(?!…)は先読みを行い、(?<name>…)はグループに名前を付けます。?は、その直前にあるものと一緒に読み取ってください。
短縮文字クラスはASCIIのみ
JavaScriptでは、\dがマッチするのは0~9だけで、\wもアクセントのないラテン文字、数字、アンダースコアだけにマッチします。そのため、\w+でcaféを検索するとcafが見つかり、\bはアクセント付き文字の位置を単語境界として扱います。ほかの言語のテキストには、uフラグとともに[\p{L}\p{N}_]+のようなUnicodeプロパティクラスを使ってください。修正したパターンは、実際のサンプルテキストで正規表現テスターを使って試せます。
パターンと文字列でのエスケープ
14個の文字には特殊な意味があり、文字どおりにマッチさせるにはバックスラッシュが必要です。対象は. * + ? ^ $ { } ( ) | [ ] \と、/…/リテラル内の/です。new RegExpで文字列からパターンを作る場合は、すべてのバックスラッシュを2重にする必要があります。そのため、\d+は"\\d+"になります。リテラルでは機能するのに文字列からは機能しないパターンは、途中でバックスラッシュが失われていることがほとんどです。
使い方
- JavaScript正規表現を入力またはペーストします(例: /^[a-z0-9]+$/i)。
- Explain Regexをクリックします。
- アンカー、文字クラス、グループ、フラグを解説する分解表を確認します。
プライバシーと制限事項
正規表現の解析と解説はすべてお使いのブラウザ内で行われます。
関連ツール
よくある質問
どの正規表現の機能を解説しますか?
アンカー(^, $)、文字クラス(d, w, s, [a-z])、量指定子(*, +, ?, {m,n})、キャプチャグループ、フラグを解説します。
正規表現の構文を検証しますか?
はい、構文エラーを即時に検出して報告します。
無料ツール · ブラウザ内で · アカウント不要