定義:有一定格式的字符串
作用:1.用來判斷一個字符串是否符合一定的要求
2.可以去一個字符串中,把某些符合規則的字符串拿出來
格式: 由 字符簇 限定符 定位符組成
字符簇:一組字符 由字符組成的集合
[0-9]數字
[^0-9]非數字
[a-z]小寫英文
[A-Z]大寫英文
[a-Z]大小寫英文
[a-zA-Z]
[a-zA-Z0-9]大小寫英文數字
\d數字
\w數字英文字母及下劃線
\D 非數字
\W 非數字英文字母及下劃線
. 代表所有(任意)字符,除了換行
說明:在字符簇中出現特殊字符使用\ \-轉義
限定符:限定字符簇中字符出現的次數
{m,n}出現m次到n次 n必須大於m
{3}3位 3次
{m,}m次以上
{0,n}n次以下
? 0或者一次{0,1}
+ 一次以上{1,}
* 0次以上{0,}
定位符: ^字符串的開始
$字符串的結束
\B單詞的開始
\D非單詞的開始與結束
| 或運算的優先級低 先左再右
()子表達式 可以加限定符 子表達式的優先級最高匹配字符串中的位置
匹配模式:i 不區分大小寫
s .中包含換行
寫正則表達式:
"/正則表達式/"
"#正則表達式#"
"!正則表達式!"
$str="fdafd565645fd56fd456afd465a";
"/[0-9]{1,}/"
匹配過程:從字符串左邊依次跟字符簇比對,如果符合計數器加1,當計數器已經到最大值。或者遇到和字符簇不匹配的字符,停止。然後判斷計數器中的值是否和限定符要求一致,一致則匹配下來,否則繼續。
運行表達式:
0|1 preg_match_all(正則表達式,字符串,數組(把匹配到的內容返回數組))
匹配所有
0|1 preg_match(正則表達式,字符串,數組(把匹配到的內容返回數組))
效率高 匹配到一次就停止
preg_split(正則表達式,字符串,數組(把匹配到的內容返回數組))
用正則表達式拆分一個字符串
preg_replace(正則表達式,替換成什麼,被替換的字符串)
用正則表達式去把一個字符串中的某些子字符串替換掉
反向引用:暫時沒講 比較複雜 用處也比較多用正則表達式替換一個字符串
說明:限定符跟字符簇可以 多次、重複出現 必須成對出現
和的使用:
匹配6位3-9的數字。
/[3-9]{6}/
匹配郵政編碼
/[0-9]{6}/ /\d{6}/
匹配一個a
/a/
匹配手機號
1開頭
第二位:345678
第三位及以後:0-9
"/[1]{1}[3-8]{1}[0-9]{9}/" 手機好正則匹配表達式
preg_match_all("/[1]{1}[345678]{1}[0-9]{9}/","183888888888",$arr);
子表達式:把表達式 中的一部分用括號括起來,括起來的部分較子表達式,子表達式後面加限定符
說明 :子表達式後可以跟使用限制符
或的使用:
匹配一個路徑字符串中(是否包含.gif .jpg .png)
"/x|y|z/" 每個或之間當成一個整體
^ :開始位置
"/^xyz/" 以xyz開始的正則表達式
$ :結束位置
"/xyz$/" 以xyz結束的正則表達式
"/^xyz$/" 以xyz開始並且以xyz結束的正則表達式 只能是xyz
郵箱的正則表達式
"/[a-zA-Z0-9_\-]{2,}@[0-9a-zA-Z\-]+(\.[a-zA-Z]+)+$/"
"/[a-z0-9_\-]{2,}@[0-9a-z\-]+(\.[a-z]{2,})+$/i" 不區分大小寫
"/[\w]+@\w+(\.\w)+$/"
整數表達式
"/^(([\+\-]{1}[1-9]{1})|([1-9]{1}))\d*$/"
正整數表達式
"/^(\+[1-9]\d*)|([1-9]\d*)$/"
"/^(\+?[1-9]\d*)$/"
負整數的表達式
"/^(\-?[1-9]\d*)$/"
浮點數表達式
/^[\+\-]?(0|[1-9]\d*)\.\d+$/
"/^[\+|\-]?(0|[1-9]\d*)\.\d+$/"
正浮點數表達式
"/^(\+0\.\d+)|(+[1-9]\.\d*)|(0\.\d+)|([1-9]\d*\.\d+)$/"
"/^(\+?0\.\d+)|(+?[1-9]\d*\.\d+)$/"
負浮點數表達式
"/^\-?(0|[1-9]\d*)\.\d+$/"
獲取所有P標籤中的所有內容
"/(<p.*?>)(.*?)<\/p>/s"
去除.*的貪婪性:
.*?
通過數字拆分字符串
$str="fdadfsa12fdafda12fdas1";
preg_split("/\d+/",$str,$arr);