元字符:\b 與\B
他們兩個(gè)叫做邊界元字符
講它之前先復(fù)習(xí)一下:
\w 表示數(shù)字第岖,字母與下劃線
\W 表示\w以外的字符
那么\b 表示邊界含義就是 一個(gè)\w與一個(gè)\W字符之間的邊界
同樣 \B 表示為上面的反面
\B 表示一個(gè)\w與一個(gè)\w,或者一個(gè)\W與一個(gè)\W之間的邊界
元字符:^ 與$
其實(shí)^這個(gè)符號(hào)我們第一篇文章里學(xué)習(xí)過
[0-9] 與[^0-9] 我們發(fā)現(xiàn)它在[]里面表示的是一個(gè)補(bǔ)集的概念侵续!
而這里我們講的是不放在[]里面的^
它叫字符串邊界符
^ 匹配字符串頭部 $ 字符串尾部
擴(kuò)展含義:在正則表達(dá)式前面加(?m)后,開啟分行匹配模式(不是所有的都支持分行匹配)
^還可以匹配行分隔符(換行符)后面開始的問題
$還可以匹配行分隔符(換行符)后面結(jié)束的問題
子表達(dá)式()
作用:
1.提升優(yōu)先級(jí)
2.在iOS中憾儒,一個(gè)正則表達(dá)式對(duì)像regx询兴,range方法傳入0,取到是這個(gè)正則表達(dá)式本身匹配的結(jié)果
range方法傳入1起趾,表示使用從左到右數(shù)第一個(gè)子表達(dá)式匹配出的結(jié)果集合
舉例 @"(.+)" 匹配的是是OC字符串诗舰,當(dāng)時(shí)rang傳入1 匹配出的就是純字符串了。
range 0 匹配出的結(jié)果是 @“123”训裆,range 1 匹配出結(jié)果是 123眶根,
有很多h5程序員使用??來代替非換行型空格。
我們?cè)趺雌ヅ溥@個(gè)呢边琉?
?{2}
這樣我們只能匹配?; 因?yàn)榇螖?shù)集合只對(duì)緊挨著它的前一個(gè)字符有效果属百。
使用字表達(dá)式就可以解決這個(gè)問題
(?){2}
應(yīng)用舉例:ip地址的匹配
\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
使用字表達(dá)式后
(\d{1,3}.){3}\d{1,3}
字表達(dá)式應(yīng)用舉例 如匹配年份 19|20\d{2}
可以匹配19 與20xx 但是不能完全匹配1998,
以為|這個(gè)或者元字符的優(yōu)先級(jí)太高了变姨!加入子表達(dá)式()可以解決優(yōu)先級(jí)問題
(19|20)\d{2}
字表達(dá)式的嵌套使用 族扰,同樣匹配ip地址,但是數(shù)字不能大于255,如下:
(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])).){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
Ps:正則表達(dá)式只是字符的匹配渔呵,并沒有什么的數(shù)值的邏輯運(yùn)算處理怒竿,所以<= 255真的很難處理。只能按照上面的處理方式進(jìn)行處理扩氢。