よく使う正規表現30選
正規表現は、文字列のパターンマッチングや検索・置換で頻繁に使われる強力なツールです。以下に、よく使用される正規表現とその用途を例示します。
・基礎編(10選)
・応用編(20選)
基礎編 (10選)
正規表現(RegEx)は文字列のパターンマッチングに使用される強力なツールです。以下に、正規表現の基礎を押さえるための重要な10項目を紹介します。
1. ドット(.)
ドット .
は任意の1文字にマッチします。改行を除くすべての文字と一致します。
例:
- 正規表現:
a.b
- マッチ対象:
aab
,acb
, など
2. キャレット(^)とドル記号($)
-
^
は行の先頭にマッチします。 -
$
は行の末尾にマッチします。
例:
- 正規表現:
^abc
- マッチ対象:
abcdef
, ただしxyzabc
にはマッチしません。
3. バックスラッシュ(\)
バックスラッシュ \
は特別な意味を持つ文字をエスケープするために使用されます。
例:
- 正規表現:
\\
- マッチ対象: バックスラッシュ (
\
)
4. 角かっこ([])
角かっこ []
は、文字クラスを定義します。中に書かれた任意の1文字と一致します。
例:
- 正規表現:
[abc]
- マッチ対象:
a
,b
,c
5. ハイフン(-)
ハイフン -
は範囲指定に使用されます。[a-z]
は小文字アルファベットの任意の1文字にマッチします。
例:
- 正規表現:
[0-9]
- マッチ対象:
1
,5
,9
など
6. アスタリスク(*)
アスタリスク *
は直前の文字が0回以上繰り返される場合にマッチします。
例:
- 正規表現:
ab*c
- マッチ対象:
ac
,abc
,abbc
など
7. プラス(+)
プラス +
は直前の文字が1回以上繰り返される場合にマッチします。
例:
- 正規表現:
ab+c
- マッチ対象:
abc
,abbc
, ただしac
にはマッチしません。
8. クエスチョンマーク(?)
クエスチョンマーク ?
は直前の文字が0回または1回現れる場合にマッチします。
例:
- 正規表現:
ab?c
- マッチ対象:
abc
,ac
9. 中括弧({})
中括弧 {}
は直前の文字が特定の回数繰り返される場合にマッチします。
例:
- 正規表現:
a{2,4}
- マッチ対象:
aa
,aaa
,aaaa
10. パイプ(|)
パイプ |
は「または」を意味します。複数のパターンのどれかにマッチします。
例:
- 正規表現:
abc|def
- マッチ対象:
abc
またはdef
応用編(20選)
1. メールアドレスのマッチ
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
用途: メールアドレスの形式チェック。
2. 電話番号(日本国内)のマッチ
^\d{2,4}-\d{2,4}-\d{4}$
用途: 日本の電話番号(ハイフン付き)を検出。
3. 郵便番号(日本)のマッチ
^\d{3}-\d{4}$
用途: ハイフン付きの日本の郵便番号を検出。
4. URLのマッチ
^https?://[a-zA-Z0-9.-]+(?:\.[a-zA-Z]+)+
用途: HTTPまたはHTTPSで始まるURLを検出。
5. IPアドレスのマッチ
^(?:\d{1,3}\.){3}\d{1,3}$
用途: IPv4形式のIPアドレスを検出。
6. 日時(YYYY-MM-DD形式)のマッチ
^\d{4}-\d{2}-\d{2}$
用途: 年-月-日形式の日付を検出。
7. 数字のみを検出
^\d+$
用途: 文字列が数字のみで構成されているかを確認。
8. 英数字のみを検出
^[a-zA-Z0-9]+$
用途: 文字列が英数字のみかを確認。
9. 先頭と末尾に空白を含む文字列の検出
^\s+|\s+$
用途: 文字列の両端の空白を検出(およびトリミング)。
10. 全角文字を検出
[^\x00-\x7F]+
用途: 全角文字(日本語、漢字、ひらがな、カタカナなど)を検出。
11. 半角カタカナを検出
[\uFF61-\uFF9F]+
用途: 半角カタカナを検出。
12. 重複する単語の検出
\b(\w+)\b(?:\s+\1\b)+
用途: 重複する単語(例: "test test")を検出。
13. HTMLタグを検出
<[^>]+>
用途: HTMLタグ全般を検出。
14. JSONキーを検出
"([a-zA-Z0-9_]+)"\s*:
用途: JSON内のキー部分を抽出。
15. クォート文字列を検出
(['"])(.*?)\1
用途: シングルまたはダブルクォートで囲まれた文字列を検出。
16. パスワード強度を確認
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
用途: 英小文字、大文字、数字、特殊文字を含む8文字以上のパスワードを確認。
17. 任意の改行を含むテキストを検出
[\s\S]+
用途: 改行を含むすべてのテキストを一致させる。
18. 先頭に特定の文字列を持つ行を検出
^ERROR:
用途: "ERROR:" で始まる行を検出。
19. 末尾が特定の拡張子(例: .jpg/.png)のファイル名を検出
^.+\.(jpg|png|gif)$
用途: 特定の画像形式を検出。
20. 文字列のネストされた括弧を検出
\(([^()]*)\)
用途: 一重の括弧内の内容を抽出。