首頁  >  文章  >  後端開發  >  PHP開發技巧(十二)-常用PHP正規表示式的實例程式碼詳解

PHP開發技巧(十二)-常用PHP正規表示式的實例程式碼詳解

黄舟
黄舟原創
2017-03-17 15:42:361631瀏覽

        正規表示式是對字串運算的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。今天這篇部落格文章就是對一些常用的PHP正規表示式做了一個整理,方便以後我們在開發中進行表單驗證、字串查找什麼的。

1、匹配手機號碼的正則表達式

匹配手機號碼規則:
手機號碼基本格式:
前面三位為:
移動: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、匹配郵箱的正字條表達式

/** 
 * @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 "不匹配!";  
    }  
}

2.格式是 *****@**.**@以前是一個大小寫的字母或數字開頭,緊跟0到多個大小寫字母或數字或. _ - 的字串@之後到.之前是1到多個大小寫字母或數字的字串.之後是1到多個大小寫字母或數字或.的字串。

/** 
 * @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 "不匹配!";  
    }  
}

3、匹配電話號碼正規表示式

電話號碼匹配電話號碼規則:

區號:3到5位,大部分都是四位,北京(010)和上海市(021)三位,西藏有部分五位,可以包裹在括號內也可以沒有如果有區號由括號包裹,則在區號和號碼之間可以有0到1個空格,如果區號沒有由括號包裹,則區號和號碼之間可以有兩位長度的或-
號碼:7到8位的數字例如:(010) 12345678  或(010)12345678010  12345678 或010--12345678
reee

符合url規則:

協定://網域(www/m/wap...).名稱.字尾/檔案路徑/檔案名稱

..../2017030629/165.html

協定://網域(www/m/wap...) .名稱.後綴/檔案路徑/檔案名稱?參數


.../view.php?aid=165

協定://網域名稱(www/m/wap...).名稱.後綴/檔案路徑/檔案名稱/參數

.../tags.php?/正则表达式/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、匹配身份證號的正則表達式

匹配身份證號規則:

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、匹配地區郵編的正規表示式


匹配郵編規則:

六位數字,第一位不能為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規則:

**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、匹配時間格式的正規表示式


匹配時間規則:

形式可以為:年-月-日小時:分鐘:秒,年-月-日小時:分鐘,年-月-日:年: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下符合中文的正規表示式


/** 
 * @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最常用的正規表示式的詳解

PHP最常用的正規表示式的詳解

的標籤

php正規替換變數指定字元的方法


PHP正規表示式匹配替換與分割功能實例淺析

PHP正規表示式匹配替換與分割功能實例淺析

🎜

以上是PHP開發技巧(十二)-常用PHP正規表示式的實例程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn