php寫(xiě)正規(guī)的訣竅和常用正規(guī)則
寫(xiě)正規(guī)的訣竅
女孩和男孩戀愛(ài)時(shí)的訣竅通常是:測(cè)試你是不是對(duì)我好一點(diǎn),如果是的,咱們的關(guān)係就更好一點(diǎn)。
而正則的訣竅和戀愛(ài)的訣竅基本上一致:寫(xiě)一點(diǎn)、測(cè)一點(diǎn)。
因?yàn)?,我們需要不斷的正?guī)則,用preg_match對(duì)比是不是能匹配成功。成功了,再寫(xiě)後面的一點(diǎn)。直到寫(xiě)完,全部配對(duì)成功為止!
例如,我要寫(xiě)一個(gè)郵件信箱的正規(guī)。我先要做的事情,將常用的郵箱格式全部列出來(lái)。例如:
phpcn@php.cn?phpcn@corp.baidu.cm?phpcn@126.com?phpcn@xxx.com?12345@qq.com
常用的格式主要有這樣一些。那我們就可以來(lái)分析:
????1.先配對(duì)@之前的字元\w+(因?yàn)槭?-9A-Za-z_)
????2.第二個(gè)跟一個(gè)@符號(hào)
????3.第三個(gè)再寫(xiě)上[a-zA-Z0-9-]+ 因?yàn)閝q和126這些主網(wǎng)域是不能有底線(xiàn)的
????4.corp.baidu. 或是126. 通常郵箱後綴都是這樣的。所以我們可以寫(xiě)成:([a-zA-Z0-9-]+.){1,2}
????5.上面的是將.轉(zhuǎn)義,讓它是本身的意思。括號(hào)重複的區(qū)間最少一次,最多兩次。
????6.後面接下com|cn|org|gov.cn|net|edu.cn等就可以了
因此,我們的正規(guī)表達(dá)顯示在我使用:
/\w+@([a-zA-Z0-9-]+.){1,2}(com|cn|org|gov.cn|net|edu.cn)/
信箱的正規(guī)就被我寫(xiě)成功了。
常用正規(guī)函數(shù)
我們常用的正規(guī)函數(shù)有:
函數(shù)名 | 功能 |
---|---|
preg_filter | 執(zhí)行一個(gè)正規(guī)表示式搜尋並取代 |
preg_grep | 傳回符合模式的陣列項(xiàng)目 |
#preg_match | 執(zhí)行一個(gè)正規(guī)表示式符合 |
#preg_match_all | 執(zhí)行一個(gè)全域正規(guī)表示式匹配 |
preg_replace_callback_array | 傳入數(shù)組,執(zhí)行一個(gè)正規(guī)表示式搜尋和替換使用回調(diào) |
preg_replace_callback | 執(zhí)行一個(gè)正規(guī)表示式搜尋並且使用一個(gè)回呼進(jìn)行替換 |
preg_replace | 執(zhí)行一個(gè)正規(guī)表示式的搜尋和取代 |
preg_split | 透過(guò)一個(gè)正規(guī)表示式分隔字串 |
大家針對(duì)這這些函數(shù),對(duì)著手冊(cè)用一下。有問(wèn)題或遇到問(wèn)題可以來(lái)我們的官網(wǎng)提問(wèn)。
正規(guī)關(guān)於面試常遇到的問(wèn)題
#面試中經(jīng)??嫉降膸讉€(gè)正規(guī)達(dá)達(dá)示是:
????1.匹配郵箱
????2.匹配手機(jī)號(hào)
????3.匹配一個(gè)網(wǎng)址
????4.用正則匹配某個(gè)格式,取出某個(gè)例
????5寫(xiě)一個(gè)採(cǎi)集器
????其他....
面試的第4題和第5題我對(duì)大家不擔(dān)心,因?yàn)橹灰蠹艺J(rèn)真學(xué)習(xí)了我給的前五節(jié)的內(nèi)容。第4,5題推理就行。
因?yàn)椋ǔT诩夹g(shù)答案面試環(huán)節(jié),是時(shí)候準(zhǔn)許查手機(jī)的!
常用正規(guī)表示示
下面的是快速查找的正規(guī)表示示,大家一定得知道具體意思。
需要的時(shí)候直接複製即可: