正規表示式是對字串進行操作的一種邏輯公式,就是用一些特定的字元組合成乙個規則字串,稱之為正則匹配模式。
1.舉個簡單例子:
<?php $p=
'/蘋果/'
;$str
="我喜歡吃蘋果";if
(preg_match($p
,$str))
結果如下:
這裡重點介紹一下preg_match函式
preg_match
($reg
,$str,[
$arr])
;$reg就是自己定義的正規表示式
$str是自己要查詢的字串
$arr是匹配到的結果
php手冊定義內容如下:
preg_match
( string $pattern
, string $subject[,
array
&$matches
[, int $flags=0
[, int $offset=0
]]])
: int
php中使用pcre庫函式進行正則匹配,比如上例中的preg_match用於執行乙個正則匹配,常用來判斷一類字元模式是否存在。
pcre庫函式中,正則匹配模式使用分隔符與元字元組成,分隔符可以是非數字、非反斜線、非空格的任意字元。經常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~),例如:
/foo bar/
#^[^0-9]$#
~php~
如果模式中包含分隔符,則分隔符需要使用反斜槓(\)進行轉義。
/如果模式中包含較多的分割字元,建議更換其他的字元作為分隔符,也可以採用preg_quote進行轉義。
$p;元字元與轉義:
正規表示式中具有特殊含義的字元稱之為元字元,常用的元字元有:
\ 一般用於轉義字元
^ 斷言目標的開始位置(或在多行模式下是行首)
$ 斷言目標的結束位置(或在多行模式下是行尾)
. 匹配除換行符外的任何字元(預設)
[ 開始字元類定義
] 結束字元類定義
| 開始乙個可選分支
( 子組的開始標記
) 子組的結束標記
? 作為量詞,表示 0 次或 1 次匹配。位於量詞後面用於改變量詞的貪婪特性。 (查閱量詞)
* 量詞,0 次或多次匹配
+ 量詞,1 次或多次匹配
自定義量詞結束標記
以身份證號碼驗證為例:
<?php
/*身份證號碼分組驗證:513901-1990-07-11-2222*/
$pat
="/^(\d)(\d)(\d)(\d)(\d)$/"
;$rs
=preg_match
($pat
,'513901199007112222'
,$rsa);
var_dump
($rs);
print_r
($rsa);
$sfz
='510901199901231584'
;$pat
="/^(\d)(\d)(\d)(\d)(\d)$/"
;$rs
=preg_replace
($pat
,'出生年月:$2年$3月$4日'
,$sfz);
echo
$rs;
?>
慕課網上的正則案列:
<?php
$user
=array
('name'
=>
'spark1985'
,'email'
=>
,'mobile'
=>
'13312345678');
//進行一般性驗證if(
empty
($user))
if(strlen
($user
['name'])
<6)
//使用者名稱必須為字母、數字與下劃線if(
!preg_match
('/^\w+$/i'
,$user
['name'])
)//驗證郵箱格式是否正確if(
!preg_match
('/^[\w\.]+@\w+\.\w+$/i'
,$user
['email'])
)//手機號必須為11位數字,且為1開頭if(
!preg_match
('/^1\d$/i'
,$user
['mobile'])
)echo
'使用者資訊驗證成功'
;
可以參考一下!!
最後,附上正規表示式的手冊:
正規表示式一 php常用正規表示式匹配函式
注 pattren 正規表示式 subject 匹配的目標資料 注 1 pre match只匹配一次,而pre match all匹配所有的 2 前者是一維陣列,而後者是二維陣列 3 函式返回值對應匹配次數 注 1 兩者支援陣列匹配替換,即 pattern,replacement,subject均可...
PHP 常用正規表示式
正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計...
php常用正規表示式
匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計2,ascii字元計1 匹配空白行的正規表示式 n s r 評注 可以用來刪除空白行 匹配ht...