サーバー構築メモ

サーバーを構築したりWEBサイトを作ったりした際の個人的な備忘録です

PHP 文字列に対して正規表現によるパターンマッチを行う その5

その4はこちら。

指定した複数の文字列どれかがが含まれているか調べる

"|"を使う。

<?php
//"Windows"か"Fedora"か"Mac"が含まれていればOK、でなければNGを出力
if (preg_match('/Windows|Fedora|Mac/', $string)) {
  echo 'OK';
} else {
  echo 'NG';
}
?>

「検証結果」

($string)  →  (出力)
'Windows'  →  OK
'Fedora'  →  OK
'Mac'  →  OK
'Unix'  →  NG

グループ化した直前の文字が1回以上続くか調べる

円括弧"()"を使う。

<?php
//"(Potatoが1回以上続く) Chips"が含まれていればOK、でなければNGを出力
if (preg_match('/(Potato)+ Chips/', $string)) {
  echo 'OK';
} else {
  echo 'NG';
}
?>

「検証結果」

($string)  →  (出力)
'Potatoooo Chips'  →  NG
'Potatotototo Chips'  →  NG
'PotatoPotatoPotato Chips'  →  OK

指定した複数の文字列どれかが一部分に含まれているか調べる

<?php
//"I like (ShoyuかShio)Ramen"が含まれていればOK、でなければNGを出力
if (preg_match('/I like (Shoyu|Shio)Ramen/', $string)) {
  echo 'OK';
} else {
  echo 'NG';
}
?>

「検証結果」

($string)  →  (出力)
'I like ShoyuRamen'  →  OK
'I like ShioRamen'  →  OK
'I like MisoRamen'  →  NG

よく使う正規表現のサンプル集

  • 郵便番号
preg_match('/^[0-9]{3}-[0-9]{4}$/', $string)

  • すべて半角英数字
preg_match('/^[a-zA-Z0-9]+$/', $string)

  • URL
preg_match(
'/^(https?|ftp)(:¥/¥/[-_.!~*¥'()a-zA-Z0-9;¥/?:¥@&=+¥$,%#]+)$/',
$string)

  • メールアドレス(2行に分けています)
preg_match(
'/^([a-zA-Z0-9])+([a-zA-Z0-9¥._-])*
      @([a-zA-Z0-9_-])+([a-zA-Z0-9¥._-]+)+$/',
$string)

  • HTMLカラー(16進数)
preg_match('/^#[a-fA-F0-9]{6}$/', $string)