PHP開發技巧(十二)-常用PHPRegex的執行個體代碼詳解

來源:互聯網
上載者:User
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匹配替換與分割功能執行個體淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.