正規表現
正規表現は、スラッシュ (/) などのデリミタで囲う必要があります。 デリミタに使用できるのは、非英数字、非空白文字の任意の 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ご指摘あればをお願いします。
- << 前のページ
- 次のページ >>