正則表達式實現匹配連續數字的方法


實現的要求如下:

  • 純數字
  • 5-7位之間
  • 前三位相同
  • 從第四位開始連續

如下面的例子:

?
1
2
3
4
5
6
7
8
9
11123    #正確
22234    #正確
33345    #正確
333456   #正確
2223456   #正確
0001234   #正確
00012345  #錯誤:此行長度超標
000234   #錯誤:第3位與第4位不連續
111235   #錯誤:第5位和第6位不連續

1、匹配三位相同數字

?
1
(\d)\1{2}

2、匹配連續數字

匹配連續數字可以通過零寬斷言來匹配,當然也沒什么好辦法,只能通過列舉,如下兩行都可以匹配3位連續數字

?
1
2
(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2}\d
\d((?<=0)1|(?<=1)2|(?<=2)3|(?<=3)4|(?<=4)5|(?<=5)6|(?<=6)7|(?<=7)8|(?<=8)9){2}

說明: 第一行采用正向零寬斷言,第二行采用反向零寬斷言

想了解更多關於正則表達式零寬斷言的知識可以點擊這里

結論

集合本題中的要求,由於要求相同前三,並且后面連續從第三位開始,完成正則如下:

?
1
2
^(\d)\1{2}((?<=(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)))\d){2,4}$
^(\d)\1{2}((?<=0)1|(?<=1)2|(?<=2)3|(?<=3)4|(?<=4)5|(?<=5)6|(?<=6)7|(?<=7)8|(?<=8)9){2,4}$

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用正則表達式能帶來一定的幫助,如果有疑問大家可以留言交流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM