成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

『不再迷茫 - 正則表達(dá)式』JS正則要點(diǎn)梳理 持續(xù)更新

SQC / 1095人閱讀

摘要:寫在前面正在看的源碼看到了部分感覺以前看的正則表達(dá)式基礎(chǔ)知識已經(jīng)完全不夠用了現(xiàn)翻閱博客資料將一些中正則表達(dá)式難用的部分總結(jié)歸納方便自己和友翻閱正則分組重復(fù)匹配對于重復(fù)的匹配我們經(jīng)常使用到正則表達(dá)式的分組功能我們使用正則匹配地址來實(shí)踐一下假

[TOC]

寫在前面 - Lionad

正在看VueJS的源碼, 看到了HtmlParser部分, 感覺以前看的正則表達(dá)式基礎(chǔ)知識已經(jīng)完全不夠用了, 現(xiàn)翻閱博客資料, 將一些JS中正則表達(dá)式難用的部分總結(jié)歸納, 方便自己和sf友翻閱.

正則分組 重復(fù)匹配

對于重復(fù)的匹配, 我們經(jīng)常使用到正則表達(dá)式的分組功能, 我們使用正則匹配IP地址來實(shí)踐一下.

假設(shè)我們要匹配的IP地址在區(qū)間 0.0.0.0 - 255.255.255.255 之間, 可以直觀的了解到, 我們只需要匹配 三位數(shù)字+點(diǎn)號 三遍, 再匹配三位數(shù)字一遍就可以了.

這里說的 三位數(shù)字+點(diǎn)號 既是我們說的一種規(guī)則, 我們可以在表達(dá)式中將它們轉(zhuǎn)化為規(guī)則即: d{1,3}., 當(dāng)我們把規(guī)則用括號包裝后, 就變成了組: (d{1,3}.), 所以匹配IP地址的正則表達(dá)式可以寫作: (d{1,3}.){3}d{1,3}

換種思路, 我們也可以這樣匹配: d{1,3}(.d{1,3}){3}

拓展: 聰明的你可能已經(jīng)想到, d{1,3} 匹配是有疏漏的. 在實(shí)際生產(chǎn)過程中, d{1,3} 可能匹配 999 這種數(shù)字, 他是一個錯誤的IP地址段. 這里貼上真實(shí)的IP地址正則匹配供大家參考: ((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))) , 另人愉快的是, 它使用的分組策略仍然是不變的.
后向引用(反向引用)

我們考慮一個很特殊的情況, 當(dāng)我們要匹配四個IP段相同的情況, 如 100.100.100.100 時, 重復(fù)匹配分組的策略失效了: 重復(fù)匹配分組 并不能保證匹配相同的數(shù)字 -> 這時候我們需要借助 后向引用 策略的力量了(少年, 你渴望力量嗎2333, 戳我頭像, 帶你探索音樂與代碼交織的文藝道路.)

后向引用在不同語言的正則表達(dá)式書寫中, 有不同的語法, 我們討論JS中最常見的一種, 形如: umber 的后向引用, 其中, number 代表分組的序號.

給你一個簡單的栗子, 瞬間就記住了, 假使我們要匹配重復(fù)的三位數(shù)字, 我們將匹配一個數(shù)字的規(guī)則標(biāo)記為一個分組: (d), 重復(fù)匹配這個分組(第一個分組)的具體內(nèi)容三次: (d)1, 這樣就達(dá)到了目的.

我們很容易將重復(fù)匹配和后向引用分別開來: 前者是重復(fù)匹配相同的規(guī)則, 后者是匹配分組的具體內(nèi)容.

默認(rèn)的一些規(guī)則需要稍加理解并記住: