巧用正則零寬斷言實現靚號檢索邏輯

最近作微信沃卡項目,有個聯通靚號匹配規則,諸如AAA,AA,ABAB,AABB等等相似的號碼匹配規則,乍一看,貌似還有小複雜,其實使用正則能夠實現輕鬆匹配。數組

image

這裏須要用到正則的兩個基本知識點微信

1. 反向引用,\1,\2分表表示第一個第二個正則子表達式捕獲分組htm

2. 零寬斷言,度娘傳送門http://baike.baidu.com/view/5201192.htmblog

注意,js語言的正則中只有?!負向預查和?=正向預查,沒有?<= 而這兩個都是非捕獲get

再來看咱們的例子it

AAA的正則/(\d)(?=\1)(\d)(?=\1)\d/的意思,第一個位置是一個數字(後面跟着和第一個匹配分組同樣的)一個數字(後面跟着和第一個匹配分組同樣的)一個數字引用

AABB的正則/((\d)(?=\2)\d)(?!\1)((\d)(?=\4)\d)/的意思,第一個位置是一個數字(後面跟着和第二個匹配分組同樣的)一個數字,前面兩個數字(後面跟着和第一個匹配分組就是前面兩個數組不等)兩個數字(一個數字後面跟着和他同樣的一個數字)im

 

說的有點拗口,結合反向引用和零寬斷言,咱們能夠實現不少相似這種靚號邏輯的判斷,就不用在辛苦本身寫解析器去判斷格式了項目

相關文章
相關標籤/搜索