最近作微信沃卡項目,有個聯通靚號匹配規則,諸如AAA,AA,ABAB,AABB等等相似的號碼匹配規則,乍一看,貌似還有小複雜,其實使用正則能夠實現輕鬆匹配。數組
這裏須要用到正則的兩個基本知識點微信
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
說的有點拗口,結合反向引用和零寬斷言,咱們能夠實現不少相似這種靚號邏輯的判斷,就不用在辛苦本身寫解析器去判斷格式了項目