日期:2014-05-18  浏览次数:21110 次

求教几个手机靓号的正则表达式
求教几个手机靓号的正则表达式

任意连续6位为AABBCC的号码
例如:13983399661

末尾6位为AABBCC的号码
例如:13198339966

末尾4位为AABB的号码
例如:13918139966

末尾8位为ABCDABCD的号码
例如:13981468146

任意连续8位为ABCDABCD的号码
例如:13814681469

末尾6位为ABCABC的号码
例如:13918146146

末尾4位为ABCD的连续号码
例如:13918116789

------解决方案--------------------
都重复的东西,用到的就是反向引用,无非就是套用一种模式
^(?=\d*expression)1[358]\d{9}$
变化的也就是expression部分

其实也就最后一个还稍有那么点难度,但相当于穷举,也没什么意思

C# code
//任意连续6位为AABBCC的号码
//例如:13983399661
^(?=\d*(\d)\1(\d)\2(\d)\3)1[358]\d{9}$

//末尾6位为AABBCC的号码
//例如:13198339966
^(?=\d*(\d)\1(\d)\2(\d)\3$)1[358]\d{9}$

//末尾4位为AABB的号码
//例如:13918139966
^(?=\d*(\d)\1(\d)\2$)1[358]\d{9}$

//末尾8位为ABCDABCD的号码
//例如:13981468146
^(?=\d*(\d)(\d)(\d)(\d)\1\2\3\4$)1[358]\d{9}$

//任意连续8位为ABCDABCD的号码
//例如:13814681469
^(?=\d*(\d)(\d)(\d)(\d)\1\2\3\4)1[358]\d{9}$

//末尾6位为ABCABC的号码
//例如:13918146146
^(?=\d*(\d)(\d)(\d)\1\2\3$)1[358]\d{9}$

//末尾4位为ABCD的连续号码
//例如:13918116789
^(?=\d*(0(?=1|$)|1(?=2)|2(?=3)|3(?=4|$)|4(?=5|$)|5(?=6|$)|6(?=7|$)|7(?=8|$)|8(?=9|$)|9(?=0|$)){4}$)1[358]\d{9}$