亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

怎么學(xué)會(huì)正則表達(dá)式

原創(chuàng) 2016-10-29 16:05:48 581
摘要:其實(shí)沒那么麻煩了,Sublime Text 或 類似編輯器的 『ctrl + F』 足矣,平時(shí)開發(fā)順帶練了.記得打開左下的正則開關(guān)其實(shí)大部分涉及到字符串模式匹配的都可以用正則解決,我大概羅列下自己的經(jīng)歷1. 入門: 解決各個(gè)業(yè)務(wù)上的問(wèn)題,比如郵箱、手機(jī)號(hào)等等,開始知道正則能解決什么問(wèn)題,以及正則的受限性。2. 進(jìn)階: 比如在最初寫GitHub - leeluolee/puer: more than

其實(shí)沒那么麻煩了,Sublime Text 或 類似編輯器的 『ctrl + F』 足矣,平時(shí)開發(fā)順帶練了.

1.png

記得打開左下的正則開關(guān)



其實(shí)大部分涉及到字符串模式匹配的都可以用正則解決,我大概羅列下自己的經(jīng)歷

1. 入門: 解決各個(gè)業(yè)務(wù)上的問(wèn)題,比如郵箱、手機(jī)號(hào)等等,開始知道正則能解決什么問(wèn)題,以及正則的受限性。
2. 進(jìn)階: 比如在最初寫GitHub - leeluolee/puer: more than a live-reload server, built for efficient front-end development的時(shí)候, 嘗試實(shí)現(xiàn)一個(gè)簡(jiǎn)化的router。  在這個(gè)過(guò)程中,開始會(huì)使用子匹配和特定的宿主語(yǔ)言API實(shí)現(xiàn)一些高級(jí)特性,類express的route 會(huì)支持 括號(hào)內(nèi)引入子規(guī)則 ,比如 /api/blogs/:id(\d+) ,這里會(huì)有一些較復(fù)雜遞歸的處理,配合String.prototype.replace(首參數(shù)支持正則)可以較好的解決。在這個(gè)階段,基本我已經(jīng)可以感覺已經(jīng)無(wú)需查閱任何關(guān)于正則的資料,可以自行解決不太復(fù)雜的文本模式匹配問(wèn)題,初步形成了記憶。

3. 再進(jìn)階:  碰到更復(fù)雜的正則表達(dá)式的需求 我嘗試了使用javascript生成正則表達(dá)式,比如在GitHub - leeluolee/nes: a small js selector lib with incredible extensibility, but still very fast 拼裝了一個(gè)下面的正則,這個(gè)幾乎是無(wú)法人肉維護(hù)了,必須用代碼生成。

/(\s*,\s*)|(#([\w\u4e00-\u9fbf-]+))|(\*|\w+)|(\.([\w\u4e00-\u9fbf-]+))| (:([\w\u4e00-\u9fbf-]+)(?:\(([^\(\)]*|(?:\([^\)]+\)|[^\(\)]*)+)\))?)| (\[([\w\u4e00-\u9fbf-]+)(?:([*^$|~!]?=)['"]?((?:[\w\u4e00-\u9fbf-]||\s)+)['"]?)?\])|(::([\w\u4e00-\u9fbf-]+)) |([>\s+~&%](?!=))|(\s*\{\s*(\d*),(\-?\d*)\s*\}\s*)/g

后面的一些非業(yè)務(wù)項(xiàng)目,涉及到的更復(fù)雜場(chǎng)景,基本也是類似的解決方案,只不過(guò)生成的正則更加惡心。我可以列舉下,比如

https://github.com/leeluolee/mcss/blob/master/lib/tokenizer.js#L199

https://github.com/regularjs/regular/blob/master/src/parser/Lexer.js#L225

后面碰到的這些問(wèn)題,其實(shí)有些不算是完全的正則了,因?yàn)闀?huì)與上下文相關(guān),到這里基本上你可以有十足的把握清楚何時(shí)才去使用正則表達(dá)式。

發(fā)佈手記

熱門詞條