基本的なメタ文字
| パターン | 説明 | 例 |
|---|
. | 任意の1文字(改行以外) | a.c → abc, aXc |
^ | 行頭 | ^Hello |
$ | 行末 | World$ |
\ | エスケープ | \. → ピリオド |
| | OR(いずれか) | cat|dog |
文字クラス
| パターン | 説明 | 例 |
|---|
[abc] | a, b, c のいずれか | [aeiou] → 母音 |
[^abc] | a, b, c 以外 | [^0-9] → 数字以外 |
[a-z] | a〜zの範囲 | [A-Za-z] → 英字 |
[0-9] | 0〜9の範囲 | [0-9]+ → 数字 |
特殊文字クラス
| パターン | 説明 | 等価 |
|---|
\d | 数字 | [0-9] |
\D | 数字以外 | [^0-9] |
\w | 単語文字 | [A-Za-z0-9_] |
\W | 単語文字以外 | [^A-Za-z0-9_] |
\s | 空白文字 | [ \t\n\r\f] |
\S | 空白以外 | [^ \t\n\r\f] |
\b | 単語境界 | \bword\b |
\B | 単語境界以外 | |
量指定子
| パターン | 説明 | 例 |
|---|
* | 0回以上 | a* → "", a, aa, aaa |
+ | 1回以上 | a+ → a, aa, aaa |
? | 0回または1回 | colou?r → color, colour |
{n} | ちょうどn回 | a{3} → aaa |
{n,} | n回以上 | a{2,} → aa, aaa, aaaa |
{n,m} | n〜m回 | a{2,4} → aa, aaa, aaaa |
最短マッチ(非貪欲)
| パターン | 説明 |
|---|
*? | 0回以上(最短) |
+? | 1回以上(最短) |
?? | 0回または1回(最短) |
{n,m}? | n〜m回(最短) |
"<div>a</div><div>b</div>".match(/<div>.*<\/div>/);
"<div>a</div><div>b</div>".match(/<div>.*?<\/div>/);
グループ化
| パターン | 説明 | 例 |
|---|
(abc) | キャプチャグループ | (\d+)-(\d+) |
(?:abc) | 非キャプチャグループ | (?:https?|ftp):// |
(?<name>abc) | 名前付きグループ | (?<year>\d{4}) |
\1, \2 | 後方参照 | (\w+)\s\1 → word word |
const match = "2025-01-10".match(/(\d{4})-(\d{2})-(\d{2})/);
const match = "2025-01-10".match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/);
先読み・後読み
| パターン | 説明 | 例 |
|---|
(?=abc) | 肯定先読み | \d+(?=円) → “100”円 |
(?!abc) | 否定先読み | \d+(?!円) → 100ドル |
(?<=abc) | 肯定後読み | (?<=\$)\d+ → $“100” |
(?<!abc) | 否定後読み | (?<!\$)\d+ |
"100円 200ドル".match(/\d+(?=円)/g);
"$100 200円".match(/(?<=\$)\d+/g);
フラグ
| フラグ | 説明 |
|---|
g | グローバル(全てにマッチ) |
i | 大文字小文字を区別しない |
m | 複数行モード(^$が各行に) |
s | .が改行にもマッチ |
u | Unicode対応 |
/pattern/gi
"Hello WORLD".match(/hello/i);
"a1b2c3".match(/\d/g);
よく使うパターン
メールアドレス
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
電話番号(日本)
0\d{1,4}-?\d{1,4}-?\d{4}
郵便番号(日本)
^\d{3}-?\d{4}$
日付(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
IPアドレス
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
パスワード(8文字以上、英大小数字含む)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
HTMLタグ
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)
全角文字
[^\x01-\x7E]
日本語(ひらがな・カタカナ・漢字)
[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]
JavaScript での使用
/\d+/.test("abc123");
"hello123world456".match(/\d+/g);
"hello world".replace(/world/, "JavaScript");
"a1b2c3".replace(/\d/g, "X");
"a,b;c".split(/[,;]/);
"hello world".search(/world/);
Python での使用
import re
re.match(r"\d+", "123abc")
re.search(r"\d+", "abc123")
re.findall(r"\d+", "a1b2c3")
re.sub(r"\d+", "X", "a1b2c3")
re.split(r"[,;]", "a,b;c")
pattern = re.compile(r"\d+")
pattern.findall("a1b2c3")
関連記事
← Back to list