日曜日, 3月 22, 2009

正規表現例

  • メールアドレスの正規表現
  • メールアドレスは厳密にチェックしようとするとなかなか難しいのですが、簡単なチェックだったらこれでOKぽいですね。

    $email = "test@example.com"; if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) {     echo "Your email is ok."; } else {     echo "Wrong email address format"; } 
  • ユーザー名の正規表現
  • 英数字と下線を入れた、5文字以上20文字以下のユーザー名チェック用です。

    $username = "user_name12"; if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) {     echo "Your username is ok."; } else {     echo "Wrong username format."; } 
  • 電話番号の正規表現
  • US用ですが。これをもとに日本語版をつくる勉強してもいいかもですね。

    $phone = "(021)423-2323"; if (preg_match('/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x', $phone)) {     echo "Your phone number is ok."; } else {     echo "Wrong phone number."; } 
  • IPアドレスの正規表現
  • IPアドレスチェック用。

    $IP = "198.168.1.78"; if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/',$IP)) {     echo "Your IP address is ok."; } else {     echo "Wrong IP address."; } 
  • 郵便番号の正規表現
  • またしてもUS用ではありますが。

    $zipcode = "12345-5434"; if (preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zipcode)) {     echo "Your Zip code is ok."; } else {     echo "Wrong Zip code."; } 
  • SSNの正規表現
  • アメリカのソーシャルセキュリティ番号ですね。USではよく使います。

    $ssn = "333-23-2329"; if (preg_match('/^[\d]{3}-[\d]{2}-[\d]{4}$/',$ssn)) {     echo "Your SSN is ok."; } else {     echo "Wrong SSN."; } 
  • クレジットカード番号の正規表現
  • これも知っておくと良いかも。

    $cc = "378282246310005"; if (preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/', $cc)) {     echo "Your credit card number is ok."; } else {     echo "Wrong credit card number."; } 
  • ドメインの正規表現
  • こちらもたまに必要になりますね。

    $url = "http://komunitasweb.com/"; if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)) {     echo "Your url is ok."; } else {     echo "Wrong url."; } 
  • URLからドメインを抽出する正規表現
  • 他の命令使えばできるような・・・ま、でも勉強にはなりますね。

    $url = "http://komunitasweb.com/index.html"; preg_match('@^(?:http://)?([^/]+)@i', $url, $matches); $host = $matches[1];  echo $host; 
  • 特定のキーワードを強調表示
  • 特定の文字列にスタイルを当てたいことってありますよね。そうしたときに使えそうです。

    $text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor";  $text = preg_replace("/\b(regex)\b/i", '\1', $text);  echo $text; 

正規表現は慣れないと使いづらいですよね。しかし使えると超絶便利。よく使うパターンを覚えておいて応用を利かせていきたいものです。

» 10 Practical PHP Regular Expression Recipes | KomunitasWeb

0 件のコメント: