検査
正規表現テスター
JavaScript の正規表現エンジンで、パターンがどこにマッチするかをハイライト表示します。フラグ (g / i / m / s / u) の切替、キャプチャグループの値、マッチごとのインデックス表示に対応。
サンプル
/ /
マッチ結果
マッチ詳細
直近の入力
全履歴 ·
履歴はあなたのブラウザにのみ保存されます。サーバーに送信されません。 設定
こんなときに使う
メールアドレス形式の検証パターンを試す
簡易な email 検証用のパターンをサンプル文字列に当てて、想定外の形式がどう扱われるか確認します。完全な RFC 5322 ではなく実用上の妥当性を確かめる用途です。
\b[\w.+-]+@[\w-]+\.[\w.-]+\b ログから日付や時刻を抜き出す
アプリログから ISO 8601 や独自形式のタイムスタンプを抽出するパターンを検証します。g フラグを付けて全マッチを取得します。
\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})? URL からドメインだけ抜く
キャプチャグループを使って host 部分だけ取り出します。マッチ結果に $1 として表示されます。
https?:\/\/([^\/]+) コードから TODO コメントを集約する
// TODO: ... や # TODO: ... をまとめて見つけて、棚卸しする用途。
(?://|#)\s*TODO[::]?\s*(.+) 置換前後のパターンを試す(先頭ゼロ埋め等)
数字を 0 埋めにする、複数空白を 1 つにまとめる等の置換パターンをマッチで検証してから、エディタの置換に持ち込みます。
\b(\d{1,2})\b → 入力は本ツールで確認、置換は別ツールで Unicode プロパティの動作を確認する
u フラグと \p{Script=Hiragana} などの Unicode プロパティを試して、日本語の特定の文字種だけマッチさせる挙動を理解します。
\p{Script=Hiragana}+ よくあるエラーと対処
ERR
Invalid regular expression: /.../: Unterminated character class - 原因
- [ で開いた文字クラスを ] で閉じていません。または [ そのものをリテラルで使いたいのにエスケープしていません。
- 対処
- 対応する ] を入れるか、リテラルとして使うなら \[ にエスケープしてください。
ERR
Invalid regular expression: Nothing to repeat - 原因
- *, +, ? の前に対象がないパターンです。例: ^* や (?:)+。
- 対処
- 繰り返しの対象を直前に置いてください。リテラルとして * を使うなら \* にエスケープします。
ERR
Invalid regular expression: Invalid escape - 原因
- u フラグありの正規表現で、\p や \u などのシーケンスが正しい形式ではありません。
- 対処
- \p{...} の形式や \u{XXXX} の波カッコを確認してください。u フラグを外せば緩い解釈になります。
ERR
Range out of order in character class - 原因
- [z-a] のように文字クラスの範囲指定が逆順になっています。
- 対処
- コードポイント順に書いてください: [a-z]。
CLI / 他言語でやる方法
Node.js
node -e "console.log('text'.match(/pattern/g))" 本ツールと同じ JavaScript 正規表現エンジン。
ripgrep
rg 'pattern' file.txt Rust の正規表現で構文がやや異なる(先読み・後読み非対応)。CLI でファイル横断検索に最適。
GNU grep
grep -E 'pattern' file.txt ERE。Perl 互換は -P(GNU grep のみ)。
よくある質問
▶ 対応している正規表現の方言は?
JavaScript の RegExp と同じです。Perl 互換(PCRE)に近いですが、可変長の後読みや一部の構文は対応が異なります。具体的には ECMAScript の仕様に従います。
▶ g フラグを付けないと最初の 1 件しかマッチしません
JavaScript の RegExp.prototype.exec / String.prototype.match の仕様です。本ツールも同じ挙動。複数マッチを見たい場合は g フラグを付けてください。
▶ 後読み (?<=...) や (?<!...) は使えますか?
モダンブラウザ(Chrome 62 以降など)で対応しています。本ツールはブラウザの RegExp を使うので、利用環境のブラウザに依存します。
▶ 改行 \n はどう扱われますか?
. はデフォルトでは \n にマッチしません。改行も含めたい場合は s フラグ(dotAll)を付けてください。^ と $ は m フラグで各行の先頭・末尾にマッチします。
▶ キャプチャグループの番号と名前付きキャプチャは?
() で番号付きキャプチャ、(?<name>...) で名前付きキャプチャです。本ツールは番号順に $1, $2... として表示します。
▶ 性能の悪いパターンで固まりませんか?
破滅的バックトラックを起こすパターンは時間がかかります。安全のため g フラグ時のループは 10000 回までに制限していますが、大きな入力には注意してください。
▶ サーバーに送信されますか?
送信されません。すべてブラウザ内の JavaScript で実行されます。
▶ / で始めて / で終わる書き方(リテラル形式)が使えますか?
本ツールはパターン部分とフラグを別フィールドに分けて入力します。/foo/g 全体を貼っても自動で外しませんので、/ を除いて貼ってください。
もっと深く知る
公式ドキュメント / 仕様
学習サイト / 記事
※ Amazon へのリンクはアフィリエイトリンク(Amazon アソシエイト)を含みます。