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