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

rainzero999 2012-03-10 12:11:59
求教几个手机靓号的正则表达式

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

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

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

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

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

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

末尾4位为ABCD的连续号码
例如:13918116789
...全文
648 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2012-03-10
  • 打赏
  • 举报
回复
类似的正则以前写过,没什么难度,就是麻烦,举两个例子吧

//aabb,允许aaaa
(\d)\1(\d)\2$
//abab,允许aaaa
(\d)(\d)\1\2$
//aaab,允许aaaa
(\d)\1\1\d$
//同时允许
(?:(\d)\1(\d)\2|(\d)(\d)\3\4|(\d)\5\5\d)$
//以上如果不允许aaaa,第二个(\d)改为((?!\1)\d)
//如aabb,不允许aaaa
(\d)\1((?!\1)\d)\2$



//递增如果只是4位正则勉强可以做到,基本上类似于穷举了,意义不大,此为不允许7890
(0(?=1)|1(?=2)|2(?=3)|3(?=4|$)|4(?=5|$)|5(?=6|$)|6(?=7|$)|7(?=8|$)|8(?=9|$)|9(?=0|$)){4}$
//如果允许7890
(0(?=1|$)|1(?=2)|2(?=3)|3(?=4|$)|4(?=5|$)|5(?=6|$)|6(?=7|$)|7(?=8|$)|8(?=9|$)|9(?=0|$)){4}$

-过客- 2012-03-10
  • 打赏
  • 举报
回复
都重复的东西,用到的就是反向引用,无非就是套用一种模式
^(?=\d*expression)1[358]\d{9}$
变化的也就是expression部分

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

//任意连续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}$
rainzero999 2012-03-10
  • 打赏
  • 举报
回复
谢谢,都有用,但是只解决了
末尾4位为AABB的号码,其他的都不能解决呀

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧