正則表達式是用於描述字符排列和匹配模式的一種語法規則。它主要用於字符串的模式分割、匹配、查找和替換操做。目前爲止,咱們前面所用過的精確(文本)匹配也是一種正則表達式。php
preg_
爲前綴命名的函數;ereg_
爲前綴命名的函數函數名 描述 ----------------------|-------------------------- preg_match() | 進行正則表達式匹配 preg_match_all() | 進行全局正則表達式匹配 preg_replace() | 執行正則表達式的搜索和替換 preg_split() | 用正則表達式分割字符串 preg_grep() | 返回與模式匹配的數組單元 preg_replace_callback | 用回調函數執行正則表達式的搜索和替換
1.定界符 (必須)
一般使用特殊字符組成,經常使用「/」。
2.原子(必須)
是正則表達式的最基本組成單元,並且在每一個模式中最少要包含一個原子。原子是由全部那些未顯示指定爲元字符的打印和非打印字符組成,具體分爲5類。正則表達式
\' \* \+ \? \.
等。3.元字符
4.模式修正符數組
示例:函數
# 匹配一個字符a $pattern = '/a/'; # 匹配字符a,若是有返回1,沒有返回0,只能匹配一次。 echo preg_match($pattern, '012344556'); # preg_match也可用於判斷 if(preg_match($pattern, "1232423423", $matches)) { echo "匹配到了<hr/>"; # 並把匹配出來的字符以數組的形式賦值給$matches; # 打印結果:`array(1) {[0] => string(1) "a"}`; var_dump($matches); }else { echo "沒有匹配"; }
元字符匹配:url
# 若是隻想匹配 `.`,特殊含義的字符要轉義。 $pattern = "/\./" # 匹配非打印字符 $pattern = "/\n/" # 匹配0-9數字 $pattern = "/\d/"; # 匹配除了0-9的數組 $pattern = "/\D/"; # 匹配數字+大小寫字母+下劃線 $pattern = "/\w/"; # 匹配除了數字、大小寫字母、下劃線 $pattern = "/\W/"; # 匹配空白符(換行、縮進、空格) $pattern = "/\s/"; # 匹配除了空白符的字符 $pattern = "/\S/"; # `*` 表明匹配前面的原子出現0、一、或屢次 $pattern = "so*u"; # `+` 表明匹配前面的原子出現1次、或屢次 $pattern = "so+u"; # `?` 匹配前面的一個原子出現0次或者1次 $pattern = "hao?sou"; # 匹配除了換行符的任意字符 $pattern = "/./"; # `|`表明或者 $pattern = "/a|b|c/"; # 匹配前面的一個原子恰巧出現n次; $pattern = "/hao{2}sou/"; # 匹配出現>=2次 $pattern = "/hao{2, }sou/"; # 匹配出現2-5次 $pattern = "/hao{2, 5}sou/"; # `^` 必須以該原子開頭 $pattern = "/^aaa/"; # `$` 必須以該原子結尾 $pattern = "/aaa$/"; # 嚴格模式 # 必須嚴格只能匹配aaa。 $pattern = "/^aaa$/"; # a | b | c $pattern = "/[abc]/"; # 除了a,b,c $pattern = "/[^abc]/"; # `()`能夠看作一個總體,還能夠作反向引用 # 好比要匹配協議頭爲http、https、ftp $pattern = "/(http|https|ftp):\/\//"; # 匹配除了空白符的任意字符 $pattern = "/.*/"; # `.*`貪婪模式 $str = "<b>abc</b><b>abc</b>"; $pattern = "/<b>.*</b>/"; # `.*?`取消貪婪模式 $pattern = "/<b>.*?</b>/"; 或: $pattern = "/<b>.*</b>/U";
模式修正符:code
`i`表明ignore,忽略大小寫 `m`匹配多行 `.`修正.的換行符 `x`忽略正則表達式裏面的空白符 `D`取消$對\n的忽略