ユーティリティ

正規表現チェッカー

正規表現のパターンマッチをテストします

正規表現チートシート
正規表現意味
^行の最初
$行の最後
.任意の一文字
[...]括弧内の一文字 [abc]ならabcの内の一文字
*0回以上の繰返し
+1回以上の繰返し
?0回か1回
{n}n回の繰返し, n個
{m,n}m回以上、n回以下の繰返し, m〜n個
正規表現意味
a-z小文字の半角英文字
A-Z大文字の半角英文字
0-9数字
-範囲
^否定 (^0-9 は数字以外)

正規表現チェッカーは、指定した正規表現と一致する箇所をわかりやすく確認できるツールです。 下のフォームに、正規表現と検証する対象文字列を入力してください。

正規表現
検証対象文字列
結果

正規表現と検証対象文字列を入力してください

💡 正規表現の雑学・Tips
🧑‍🔬 正規表現は1950年代の数学理論が起源

正規表現は数学者のスティーヴン・クリーネが1950年代に提唱した「正規言語」の理論をベースにしています。その後、UNIXの grep コマンドに実装されたことでプログラマーに広まりました。「grep」という名前自体、正規表現コマンド g/re/p(globally search a regular expression and print)の略です。

⚠️ 壊滅的なバックトラッキング(ReDoS)に注意

(a+)+ のような正規表現は「壊滅的なバックトラッキング」を引き起こし、わずかな入力でCPUを100%占有させることがあります。これを悪用した攻撃を「ReDoS(Regular Expression Denial of Service)」と呼びます。2016年にはStack Overflowがこの問題で約34分間ダウンした事例があります。

📧 メールアドレスの正規表現は想像以上に複雑

メールアドレスを完全に検証する正規表現はRFC 5322に基づくと数百文字に及ぶ巨大なものになります。実用上は /^[^\s@]+@[^\s@]+\.[^\s@]+$/ のようなシンプルな表現で十分なことがほとんどです。「正しい正規表現」より「実用的な正規表現」を意識することが大切です。

🔍 先読み・後読みで「マッチせずに条件だけ確認」できる

(?=...)(肯定先読み)や (?<=...)(肯定後読み)を使うと、その文字列自体はマッチさせずに前後の条件だけを確認できます。例えば \d+(?=円) は「円」の直前にある数字のみを抽出でき、「円」という文字は結果に含まれません。複雑な抽出処理を簡潔に書ける強力な機能です。

🌐 言語によって正規表現の方言がある

正規表現はJavaScript・Python・PHP・Javaなどの言語ごとに微妙な差異(方言)があります。例えばPythonでは \d がUnicodeの数字全体にマッチしますが、JavaScriptでは ASCII の 0-9 のみです。また後読みの可変長対応もエンジンによって異なるため、言語をまたいだコピペには注意が必要です。