Regex是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。今天本篇博文就是對一些常用的PHPRegex做了一個整理,方便以後我們在開發中進行表單驗證、字串尋找什麼的。
1、匹配手機號碼的Regex
匹配手機號碼規則:
手機號碼基本格式:
前面三位為:
移動:134-139 147 150-152 157-159 182 187 188
聯通:130-132 155-156 185 186
電信:133 153 180 189
後面八位為:0-9位的數字
/** * @param $mobile string 需要驗證的手機號 * @return string */ function pregMobile($mobile) { $rule = "/^((13[0-9])|147|(15[0-35-9])|180|182|(18[5-9]))[0-9]{8}$/A"; if (preg_match($rule, $mobile, $result)) { return $result; } else { return "不匹配!"; } }
2、匹配郵箱的Regex
匹配郵箱規則:
郵箱基本格式是 *****@**.**@以前是一個 大小寫字母或者數字開頭,緊跟0到多個大小寫字母或者數字或 . _ - 的字串@之後到.之前是 1到多個大小寫字母或者數位字串.之後是 1到多個 大小寫字母或者數字或者.的字串。
/** * @param $email string 郵箱號 * @return string 結果 */ function pregEmail($email) { $rule = '/^[a-zA-Z0-9][a-zA-Z0-9._-]*\@[a-zA-Z0-9]+\.[a-zA-Z0-9\.]+$/A'; if (preg_match($rule, $email, $result)) { return $result; } else { return "不匹配!"; } }
3、匹配電話號碼Regex
電話號碼匹配電話號碼規則:
區號:3到5位,大部分都是四位,北京(010)和上海市(021)三位,西藏有部分五位,可以包裹在括弧內也可以沒有如果有區號由括弧包裹,則在區號和號碼之間可以有0到1個空格,如果區號沒有由括弧包裹,則區號和號碼之間可以有兩位長度的 或者-
號碼:7到8位的數字例如:(010) 12345678 或者 (010)12345678 或者 010 12345678 或者 010--12345678
/** * @param $telephone string 固話號碼 * @return string */ function pregTelephone($telephone) { $rule = '/^(\(((010)|(021)|(0\d{3,4}))\)( ?)([0-9]{7,8}))|((010|021|0\d{3,4}))([- ]{1,2})([0-9]{7,8})$/A'; if (preg_match($rule, $telephone, $result)) { return $result; } else { return "不匹配!"; } }
4、匹配網址url的Regex
匹配url規則:
協議://網域名稱(www/m/wap...).名稱.尾碼/檔案路徑/檔案名稱
..../2017030629/165.html
協議://網域名稱(www/m/wap...).名稱.尾碼/檔案路徑/檔案名稱?參數
.../view.php?aid=165
協議://網域名稱(www/m/wap...).名稱.尾碼/檔案路徑/檔案名稱/參數
.../tags.php?/Regex/1/
協議:可有可無,由大小寫字母組成;不寫協議則不應存在://,否則必須存在://
網域名稱:必須存在,由大小寫字母組成
名稱:必須存在,字母數字漢字
尾碼:必須存在,大小寫字母和.組成
檔案路徑:可有可無,由大小寫字母和數字組成
檔案名稱:可有可無,由大小寫字母和數字組成
參數:可有可無,存在則必須由?開頭,即存在?開頭就必須有相應的參數資訊
/** * @param $url string url地址 * @return string 結果 */ function pregURL($url) { $rule = '/^(([a-zA-Z]+)(:\/\/))?([a-zA-Z]+)\.(\w+)\.([\w.]+)(\/([\w]+)\/?)*(\/[a-zA-Z0-9]+\.(\w+))*(\/([\w]+)\/?)*(\?(\w+=?[\w]*))*((&?\w+=?[\w]*))*$/'; if (preg_match($rule, $url, $result)) { return $result; } else { return "不匹配!"; } }
5、匹配社會安全號碼的Regex
匹配社會安全號碼規則:
15位純數字或者18位純數字或者17位元字加一位x
/** * @param $idcard string 社會安全號碼碼 * @return string 結果 */ function pregIdcard($idcard) { $rule = '/^(([0-9]{15})|([0-9]{18})|([0-9]{17}x))$/'; if (preg_match($rule, $idcard, $result)) { return $result; } else { return "不匹配!"; } }
6、匹配地區郵編的Regex
匹配郵編規則:
六位元字,第一位不能為0
/** * @param $pos string 郵編號碼 * @return string 結果 */ function pregPOS($pos) { $rule = '/^[1-9]\d{5}$/'; if (preg_match($rule, $pos, $result)) { return $result; } else { return "不匹配!"; } }
7、匹配IP地址的Regex
匹配ip規則:
**1.**2.**3.**4**1可以是一位的 1-9,兩位的01-99,三位的001-255**2和**3可以是一位的0-9,兩位的00-99,三位的000-255**4可以是一位的 1-9,兩位的01-99,三位的001-255四個參數必須存在。
/** * @param $ip string ip地址 * @return string 結果 */ function pregIP($ip) { $rule = '/^((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))))\.) ((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5])))\.){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])| (0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))$/'; if (preg_match($rule, $ip, $result)) { return $result; } else { return "不匹配!"; } }
8、匹配時間格式的Regex
匹配時間規則:
形式可以為:年-月-日 小時:分鐘:秒,年-月-日 小時:分鐘,年-月-日:年: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。
/** * @param $time string 時間 * @return string 結果 */ function pregTime($time) { $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])))?))?$/'; if (preg_match($rule, $time, $result)) { return $result; } else { return "不匹配!"; } }
9、utf8下匹配中文的Regex
/** * @param $chinese string utf8格式中文字 * @return string 結果 */ function pregChinese($chinese) { $rule = '/([\x{4e00}-\x{9fa5}]){1}/u'; if (preg_match($rule, $chinese, $result)) { return $result; } else { return "不匹配!"; } }
相關文章:
PHP最常用的Regex的詳解
php正則過濾html標籤、空格、分行符號的代碼
php正則替換變數指定字元的方法
PHPRegex匹配替換與分割功能執行個體淺析