正規表現

正規表現は、スラッシュ (/) などのデリミタで囲う必要があります。 デリミタに使用できるのは、非英数字、非空白文字の任意の ASCII 文字ですが、バックスラッシュ (\) と null バイトは使用できません。

phpでの正規表現検索ではデリミタ必須ですが、.htaccess内のapache命令ではデリミタがなくても動いたりします。

文字 説明
! 否定。
. 任意の1文字。
[ ] 括弧内のいずれかの文字。
[^ ] 括弧内のいずれかの文字以外。
| または。
? 直前の文字の0回または1回の繰り返し
* 直前の文字の0回以上の繰り返し。
+ 直前の文字の1回以上の繰り返し。
( ) 選択範囲の境界を明示する、もしくは後方参照を作成する。
^ 行頭。(行が変わる場合\Aを使う)
$ 行末。(行が変わる場合\zを使う)
$n (0 <= n <= 9) 後方参照。 n番目の( )内の値が入ります。
%{ } サーバ変数の取得。
\ (日本語環境では円マーク)正規表現の特殊文字をエスケープする。
\A 文字列の先頭(1文字目の手前)
\Z 文字列の最後(or改行の直前)
\z 文字列の最後(改行に影響しない)
  • ^.*$ → 行の先頭から最後までが0文字以上の繰り返し。直前に文字がなくてもOK。
  • \A.*\z → 先頭から最後までが0文字以上の繰り返し。直前に文字がなくてもOK。
  • ^.+$ → 行の先頭から最後までが1文字以上の繰り返し。直前に文字がなければNG。
  • ^.?$ → 行の先頭から最後までが0文字か1文字以上の繰り返し。
  • ^ab|cd|ef$ → abとcdとefが該当
  • ^[赤青黄]$ → 赤と青と黄いずれも該当。
  • ^[a-z]$ → a~zまでのアルファベットが該当
  • ^[0-9]$ → 0~9までの数字が該当
  • ^(ab+)$ → 前が1文字でなくてもOK。
  • ^(.*)$ iphone/$1 → 後方参照。()内の文字の前にiphoneを追加。
  • ^(.*)(\.[a-z]+)$ iphone/$1/$2 → 後方参照。1つ目の()が$1、2つ目が$2。
省略形 対応する表現
\a 任意の英数字 : ([a-zA-Z0-9])
\b 空白 : ([ \\t])
\c 任意の英字 : ([a-zA-Z])
\d 任意の 10 進数字 : ([0-9])
\h 任意の 16 進数字 : ([0-9a-fA-F])
\n 改行文字 : (\r|(\r?\n))
\q 引用符で囲まれた文字列 : (\"[^\"]*\")|(\'[^\']*\')
\w 単語 : ([a-zA-Z]+)
\z 整数 : ([0-9]+)

preg_replace(PHP)

$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/' //アルファベット、数字の繰り返し+ドット+数字の繰り返し
$replacement = '${1}1,$3'; //後方参照を使用する。
echo preg_replace($pattern, $replacement, $string); //「April 15,2003」を正規表現を用いて検索し、replacementで置換する。

上の例の出力は以下となります。

April1,2003

preg_match(PHP)

$yubin=mb_convert_kana($_POST['yubin'],'a','utf-8'); //全角英数字を半角に変換。2番目引数はaで固定、3番目は文字コード。
  
if(!preg_match("/\A\d{3}\-\d{4}\z/",$yubin)){ //$yubinが○○○-○○○○でなければエラー
    $yubin="正しい郵便番号を入力してください";
}

上の例の返り値は、正しいなら1、間違っているなら0。

(参考・引用サイト:php正規表現

コメントor補足情報orご指摘あればをお願いします。

(件名or本文内でキーワード検索できます)



  • << 前のページ
  • 次のページ >>
ページトップへ