在php中常用的正則表達式包括了如電話號,郵箱,用戶名,手機號,郵箱,密碼,QQ號,身份證號碼,空格,字母,數字等等這些正則表達試代碼,下面我來整理一下。
參考N+1個正則總結:
常見的正則匹配:
代碼如下 復制代碼 ((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}[X0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))匹配騰訊QQ號:[1-9][0-9]{4,}注:騰訊QQ號從10000開始
價格:/(^[-+]?[1-9]d*(.d{1,2})?$)|(^[-+]?[0]{1}(.d{1,2})?$)/
驗證用戶密碼:"^[a-zA-Z]w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下劃線。
中國郵政編碼:[1-9]{1}(d+){5}
中國手機號碼:(86)*0*13d{9}
掩碼:
代碼如下 復制代碼/^(254|252|248|240|224|192|128|0).0.0.0$|^(255.(254|252|248|240|224|192|128|0).0.0)$|^(255.255.(254|252|248|240|224|192|128|0).0)$|^(255.255.255.(254|252|248|240|224|192|128|0|255))$/
中國電話號碼(包括移動和固定電話):((d{3,4})|d{3,4}-|s)?d{7,14}
正則表達式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"(匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222)
中國身份證號碼:
代碼如下 復制代碼((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}[X0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))
匹配空格/空行:
匹配空行的正則表達式:n[s| ]*r
匹配首尾空格的正則表達式:(^s*)|(s*$)
匹配中文字符的正則表達式: [u4e00-u9fa5]
匹配數字:
只能輸入數字:"^[0-9]*$"
整數或者小數:^[0-9]+.{0,1}[0-9]{0,2}$
只能輸入至少n位的數字:"^d{n,}$"。
只能輸入m~n位的數字:。"^d{m,n}$"
只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"
只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"
只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"
只能輸入非零的正整數:"^+?[1-9][0-9]*$"
只能輸入非零的負整數:"^-[1-9][]0-9"*$
只能輸入長度為3的字符:"^.{3}$"
匹配字母:
只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"
只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"
只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"
只能輸入由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"
只能輸入由數字、26個英文字母或者下劃線組成的字符串:"^w+$"
驗證是否含有^%&',;=?$"等字符:"[^%&',;=?$x22]+"
下面附一些自己的正則表達式應用
代碼如下 復制代碼 function pregTP($test){
代碼如下 復制代碼 function pregURL($test){
代碼如下 復制代碼 function pregPOS($test){
代碼如下 復制代碼 function pregCh($test){
function pregTI($test){
/**
匹配時間
規則:
形式可以為:
年-月-日 小時:分鐘:秒
年-月-日 小時:分鐘
年-月-日
年:1或2開頭的四位數
月:1位1到9的數;0或1開頭的兩位數,0開頭的時候個位數是1到9的數,1開頭的時候個位數是1到2的數
日:1位1到9的數;0或1或2或3開頭的兩位數,0開頭的時候個位數是1到9的數,1或2開頭的時候個位數是0到9的數,3開頭的時候個位數是0或1
小時:0到9的一位數;0或1開頭的兩位數,個位是0到9;2開頭的兩位數,個位是0-3
分鐘:0到9的一位數;0到5開頭的兩位數,個位是0到9;
分鐘:0到9的一位數;0到5開頭的兩位數,各位是0到9
*/
$rule ='/^(([1-2][0-9]{3}-)((([1-9])|(0[1-9])|(1[0-2]))-)((([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))))( ((([0-9])|(([0-1][0-9])|(2[0-3]))):(([0-9])|([0-5][0-9]))(:(([0-9])|([0-5][0-9])))?))?$/';
preg_match($rule,$test,$result);
return $result;
}
代碼如下 復制代碼 function pregIP($test){