1】、定義
正則運算式是由一些特殊的符號(原符號,元子符,修正符)組成的運算式,主要是用來對字串的分割、查找、匹配、替換等功能,
正則運算式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯,
2】、作用
1、查找某個字串中是否具有某個運算式組成的字串(表單內的各種驗證)
如:驗證郵箱 [email protected] @ .
2、使用某些字串替換原字串中符合正則的字符;(正則的字串替換)
$str1 = “這pian文章是個好文章,他講述了PHP的原理”
$str2 = '<a href="https://www.cnblogs.com/jiaoran/p/www.php.com">PHP</a>'
preg_replace('/PHP/', $str2, $str1)
3、取出某些字串中符合正則的子字串(小偷程式,采集程式)
火車頭
4、url_rewrite (url地址重寫)
3】、分類
PHP同時使用兩套正則運算式規則,
一套是由電氣和電子工程師協會(IEEE)制定的POSIX Extended 1003.2兼容正則(事實上PHP對此標準的支持并不完善),檢索速度慢,Windows下不可以使用,函式以 ereg_xxx() 開頭;
另一套來自PCRE(Perl Compatible Regular Expression)庫提供PERL兼容正則,檢索速度快,函式以 preg_xxx()開頭,
綜上,實際只需掌握第二套即可,
4】、組成
【界定符】 一般 / 或 #
【原符號】 最基本的字符,用來匹配字串中的內容
【元子符】 修飾原符號
【修正符】 修飾整個運算式
【原符號】:最基本組成單元,而且在每個模式中最少要包含一個原子
按是否簡寫分:
非簡寫,又可分為下面三類:
1、普通原子 0-9、a-z、包括漢字,但漢字一般用Unicode編碼代替:\u4E00-\u9FA5
2、特殊字符作為原子,需使用轉義符 \ ,包括:{} | [] () . ? + \ ^ $ *
3、非列印字符簇,包括:
\f 分頁
\n 換行
\r 回車
\t 制表符水平
\v 垂直制表符
簡寫類:
\d:代表一個0-9的數字
\D: 反之,代表一個不是0-9的字符 //匹配非純數字
\s: 匹配一個空字串
\S: 匹配非空字符
\w: 匹配一個字母,數字和下劃線
\W: 匹配除數字,字母,下劃線以外的任意一個字符
. : 匹配任意一個字符(除換行符 \n 外)
【元子符】: 用于修飾原符號
1)、| 管道運算子,表示或的意思
/1|2|3|4|5|6|7|8|9|0/ ===/\d/ === [0-9]
2)、[]:取一定范圍的普通字符的一些字符作為正則模式的原子
[a-z] a-z中的任何字符
[0-9a-zA-Z_] 匹配的所有的普通字符
3)、量詞:修飾原字符的個數
+ : >=1 一個或一個以上的原子
* : >=0 0個或者0個以上的原子
? : 0或者1 0個或者一個原子
有邊界限定的時候
{n}: =n 恰好出現 n 次
{n,} >=n 至少出現連續的 n次原子
{n,m} >=n <=m 出現次數是n到m次的
4)、():代表中間的字符是一個整體或后項參考
/.*(abc){2,3}.*/ abcabc
5)、行定位符,針對整個字串而言
^:表示字串開始處
abcdefg
/^a/ :字串中以a開頭
$:表示字串的結尾處
/(ddd)$/ :以ddd結尾的模式 (com)$
6)、[^]: 取反,排除字符
/[^a]/:只要字串中出現一個不是a的其他字符就符合
/[^a-d]/:只要字串中出現一個不是a、b、c、d的其他字符就符合
/[^a]d/ : 只要匹配一個 xd,x不能為a
/[^a-d]{3}/
/[^(a|b|c)]d/ 排除ad,bd,cd外的其他字符
【修正符】:用來修飾整個正則運算式,在界定符后面
i (ignore):不區分大小寫;
/abc/i ABC aBc Abc
m :將字串通過分隔符進行分割,將字串中的每一行分別進行匹配,
s :將字串視為一行,默認按照一行一行的匹配;
x :忽略正則運算式中的空白;
U :取消貪婪模式,第一次匹配后停止(非貪婪,默認是貪婪模式);
D: 修正 "$" 對 "\n" 的忽略;
u: 做 utf-8 中文匹配的時候使用;
g:該運算式可以進行全域匹配,
5】、常用函式
preg_match() | 進行正則運算式匹配
preg_match_all() | 進行全域正則運算式匹配
preg_replace() | 執行正則運算式的搜索和替換
作業中PHP其實用到的函式并不多,大多驗證作業都放在前端,基本上上面3個函式完全可以搞定,具體用法可參看PHP官網,
6】、常用正則運算式
1、表單輸入框只輸入數字
onkeyup="value=https://www.cnblogs.com/jiaoran/p/this.value.replace(/[^/d.]/g,'')"
說明:
1、運算式的三個主要組成部分,原符號、元字符、修正符,很多資料里的名稱不統一,分類也比較混亂,上面是按我個人的理解重新做的分類,
2、PHP其實用到的正則匹配并不多,基本要求是會看,看到運算式能立馬看出可能匹配的目標字串是什么樣的,其次是會寫簡單常見的運算式,碰到復雜的一般都上網搜了,
3、正則運算式非常靈活,按以上規則可組成無窮無盡的,很多跟天書似的,這是最難的,至于PHP的匹配函式看手冊基本都能看懂,所以上面沒做過多介紹,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/75605.html
標籤:PHP
上一篇:java的例外匯總(精簡版)
