Logo Wand.Tools

正規表現ジェネレーター

正規表現を智能生成・解説し、様々な一般的なパターンマッチングをサポート

PHP正規表現 完全チュートリアル(一般的な例を含む)[2025年最新ガイド]

  # PHP正規表現 完全チュートリアル(一般的な例を含む)[2025年最新ガイド]
  
  PHPにおける正規表現(Regular Expressions)は、文字列処理のための強力なツールです。このチュートリアルでは、メールアドレス、電話番号、URL、日本語文字、HTMLタグなど、一般的なマッチング要件をカバーする実践的なPHP正規表現の例を提供し、開発者がPHPでの正規表現の利用を素早く習得できるよう支援します。
  
  ## ✅ 正規表現関数一覧(pregシリーズ)
  
  ```php
  preg_match()      // 正規表現マッチを実行し、最初の一致結果を返す
  preg_match_all()  // グローバル正規表現マッチを実行し、すべての一致結果を返す
  preg_replace()    // 正規表現置換を実行する
  preg_split()      // 正規表現を使用して文字列を分割する
  preg_grep()       // 正規表現に基づいて配列をフィルタリングする

📌 一般的な正規表現とPHPの例

1️⃣ メールアドレスの照合

$email = "[email protected]";
if (preg_match("/^[\w\-\.]+@([\w\-]+\.)+[a-zA-Z]{2,7}$/", $email)) {
    echo "有効なメールアドレス";
}

2️⃣ 電話番号の照合(中国大陸)

$mobile = "13812345678";
if (preg_match("/^1[3-9]\d{9}$/", $mobile)) {
    echo "有効な電話番号";
}

3️⃣ URLアドレスの照合

$url = "https://www.example.com";
if (preg_match("/^(https?:\/\/)?([\w\-]+\.)+[a-zA-Z]{2,6}(\/\S*)?$/", $url)) {
    echo "有効なURL";
}

4️⃣ IPアドレスの照合(IPv4)

$ip = "192.168.0.1";
if (preg_match("/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/", $ip)) {
    echo "有効なIP";
}

5️⃣ HTMLタグ内のテキストコンテンツの抽出

$html = "<p>Hello <strong>world</strong></p>";
preg_match_all("/<[^>]+>([^<]+)<\/[^>]+>/", $html, $matches);
print_r($matches[1]);

6️⃣ 日本語文字の照合

$str = "こんにちはworld"; // 元の例文は「你好world」でしたが、日本語の文脈で「こんにちはworld」に修正しました。
if (preg_match("/[\x{4e00}-\x{9fa5}]|[぀-ゟ]|[゠-ヿ]/u", $str)) { // 中国語の範囲だけでなく、日本語のひらがな、カタカナの範囲も追加しました。
    echo "日本語を含みます";
}

7️⃣ すべての数字を空文字列に置換

$str = "abc123def456";
$result = preg_replace("/\d+/", "", $str);
echo $result; // 出力 abcdef

8️⃣ 文字列の分割(非アルファベットを区切り文字として)

$str = "hello123world,php";
$parts = preg_split("/[^a-zA-Z]+/", $str);
print_r($parts);

🧠 正規表現修飾子の説明

修飾子 説明
i 大文字小文字を区別しない
m マルチラインモード
s ドットを改行にもマッチさせる
u UTF-8文字をサポート
x パターン内の空白を無視する

使用方法:

preg_match("/pattern/i", $str); // 大文字小文字を区別しないマッチ

🔍 PHP 正規表現 使用のヒント

  • すべての一致結果を取得するには preg_match_all を使用します。
  • 文字列の一括置換処理には preg_replace を使用します。
  • 日本語関連の正規表現には u 修飾子を追加することを推奨します。
  • 正規表現内の特殊文字(.*?()+ など)はエスケープする必要があります。
  • 正規表現の結果をデバッグするには var_dump() を使用します。