php寫正則的訣竅和常用正則
寫正則的訣竅
女孩和男孩戀愛時的訣竅通常是:測試你是不是對我好一點,如果是的,咱們的關系就更好一點。
而正則的訣竅和戀愛的訣竅基本一致:寫一點、測一點。
因為,我們需要不斷的正則,用preg_match對比是不是能匹配成功。成功了,再寫后面的一點。直到寫完,全部匹配成功為止!
例如,我要寫一個郵箱的正則。我先要做的事情,將常用的郵箱格式全部列出來。例如:
phpcn@php.cn?phpcn@corp.baidu.cm?phpcn@126.com?phpcn@xxx.com?12345@qq.com
常用的格式主要有這樣一些。那我們就可以來分析:
????1.先匹配@之前的字符 w+(因為是0-9A-Za-z_)
????2.第二個跟一個@符
????3.第三個再寫上[a-zA-Z0-9-]+ 因為qq和126這些主域名是不能有下劃線的
????4.corp.baidu. 或者是126. 通常郵箱后綴都是這樣的。所以我們可以寫成:([a-zA-Z0-9-]+.){1,2}
????5.上面的是將.轉(zhuǎn)義,讓它是本身的意思。括號重復的區(qū)間最少一次,最多兩次。
????6.后面接下com|cn|org|gov.cn|net|edu.cn等就可以了
因此,我們的正則表達示在我使用:
/w+@([a-zA-Z0-9-]+.){1,2}(com|cn|org|gov.cn|net|edu.cn)/
郵箱的正則就被我寫成功了。
常用正則函數(shù)
我們常用的正則函數(shù)有:
函數(shù)名 | 功能 |
---|---|
preg_filter | 執(zhí)行一個正則表達式搜索和替換 |
preg_grep | 返回匹配模式的數(shù)組條目 |
preg_match | 執(zhí)行一個正則表達式匹配 |
preg_match_all | 執(zhí)行一個全局正則表達式匹配 |
preg_replace_callback_array | 傳入數(shù)組,執(zhí)行一個正則表達式搜索和替換使用回調(diào) |
preg_replace_callback | 執(zhí)行一個正則表達式搜索并且使用一個回調(diào)進行替換 |
preg_replace | 執(zhí)行一個正則表達式的搜索和替換 |
preg_split | 通過一個正則表達式分隔字符串 |
大家針對這這些函數(shù),對著手冊用一下。有問題或遇到問題可以來我們的官網(wǎng)提問。
正則關于面試常遇到的問題
面試中經(jīng)??嫉降膸讉€正則達達示是:
????1.匹配郵箱
????2.匹配手機號
????3.匹配一個網(wǎng)址
????4.用正則匹配某個格式,取出某個例
????5寫一個采集器
????其他....
面試的第4題和第5題我對大家不擔心,因為只要大家認真學習了我給的前五節(jié)的內(nèi)容。第4,5題推理就行。
因為,通常在技術答題面試環(huán)節(jié),是時候準許查手機的!
常用正則表達示
下面的是快速查找的正則表達示,大家一定得知道具體意思。
需要的時候直接復制即可: