正規表現チェッカー
正規表現のパターンマッチをテストします
正規表現チートシート
| 正規表現 | 意味 |
|---|---|
| ^ | 行の最初 |
| $ | 行の最後 |
| . | 任意の一文字 |
| [...] | 括弧内の一文字 [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 のみです。また後読みの可変長対応もエンジンによって異なるため、言語をまたいだコピペには注意が必要です。