m moji kit v1.0.9
.*
検査

正規表現テスター

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 アソシエイト)を含みます。

関連ツール