我现在在写类似靓号规则的正则。
尾数 11、22、33、44、55、77 带 4 遇到这类最低级的号码
我发现我有些问题了。我先做尾数 11、22、33、44、55、77 需求。
/\d*?(1|2|3|4|5|7)(6|8|9|0){1}(11|22|33|44|55|77)\b/
但是还能搜索到中间是三连AAA,尾数是 11、22、33、44、55、77 的号码(带不带 4 这个先另说)
请问有什么办法吗?
1
linuxsteam OP 我先说一下我的思路,
先把好匹配的高级靓号筛选出来、 然后使用(?!4 连靓号|5 连靓号|6 连靓号) 这样的方法排除高级靓号。 不知道这种思路是否可行? 小弟想求长辈指导思路。我感觉我先写便宜号码的思路貌似是不对的。 |
2
sagaxu 2018-08-20 09:54:57 +08:00 via Android
根本不该用正则做
|
3
linuxsteam OP @sagaxu 那应该用什么呀,我现在没啥思路。我现在已经局限于正则了
|
4
SorcererXW 2018-08-20 11:41:16 +08:00 via Android
@linuxsteam 不用 regexp 的话,可以从头到尾遍历一遍呀,检测特征就标记一下,最后做个判断,甚至可以给号码打分
|
5
otakustay 2018-08-20 12:12:55 +08:00
@linuxsteam 自己写个函数做啊,一个函数里用不同正则一一测试也成的啊
|
6
jiajia94 2018-08-20 12:47:32 +08:00
一个正则匹配尾数 11、22、33、44、55、77,另一个正则匹配没有 3 连的号码,两个都命中才算~
|
7
manhere 2018-08-20 12:50:33 +08:00
不用正则,先把可能的靓号组合生成一个列表,简单比对包含关系就行了
|
8
jiajia94 2018-08-20 13:16:45 +08:00 1
^(?:(?!(\d)\1\1).)*?(\d)(?!\2)(1|2|3|4|5|7)\3$ 这个正则也行~
|
9
panpanpan 2018-08-20 13:43:38 +08:00
生成一百万号码出来,然后给每个靓号都做标记,需要的时候直接用 tag 取。
|
10
ChangeTheWorld 2018-08-20 14:54:04 +08:00 1
某扫号软件附件带的正则,楼主看看够不够用,发出来挺费金币的
``` "*AAA*" "\d([0-9])(?!\1)([0-9])\2{2}\d" "如 67772" "*AAAA*" "\d([0-9])(?!\1)([0-9])\2{3}\d" "如 355553" "A2B2B2A2" "\d{3}(\d{2})(?!\1)(\d{2})\2\1" "如 33555533" "A3B3" "\d{5}(\d{3})\1" "结尾如 555777" "*AAAAA*" "\d([0-9])(?!\1)([0-9])\2{4}\d" "如 4666662" "7 拖 1" "\d{2}([0-9])(?!\1)([0-9])\2{6}(?!\2)([0-9])" use="no" bz="如 33333335" "**ab **ab" "\d{5}(\d{2})(?!\1)(\d{2})\1" "结尾如 2356 8756" "7 拖二" "\d{1}([0-9])(?!\1)([0-9])\2{6}(?!\2)([0-9])\3" "如 44444442" "AA" "\d{8}([0-9])(?!\1)([0-9])\2{1}" "结尾双连" "AAA" "\d{7}([0-9])(?!\1)([0-9])\2{2}" "结尾三连" "AAAA" "\d{6}([0-9])(?!\1)([0-9])\2{3}" "4 连炸弹" "8 拖一" "\d{1}([0-9])(?!\1)([0-9])\2{7}(?!\2)([0-9])" "如 666666669" "AAAAA" "\d{6}([0-9])\1{4}" "5 连炸弹" "AAAAAA" "\d{5}([0-9])\1{5}" "6 连" "AAAB" "\d{6}([0-9])(?!\1)([0-9])\2{2}(?!\2)([0-9])" "结尾如 7778" "AABB" "\d{6}([0-9])(?!\1)([0-9])\2(?!\2)([0-9])\3" "结尾如 7788" "AABBCC" "\d{4}([0-9])(?!\1)([0-9])\2(?!\2)([0-9])\3(?!\3)([0-9])\4" "结尾如 335577" "AABBCCDD" "\d{3}([0-9])\1([0-9])\2([0-9])\3([0-9])\4" "如 22443311" "AABBCCDDEE" "\d{3}([0-9])\1([0-9])\2([0-9])\3([0-9])\4" "如 2244668811" "ab** ab**" "\d{3}(\d{2})(?!\1)(\d{2})\1(\d{2})" "如 2365 2374" "ABAB" "\d{7}([0-9])(?!\1)([0-9])\1\2" "结尾如 2323" "ABBA" "\d{7}([0-9])(?!\1)([0-9])\2\1" "结尾如 7887" "ABBABB" "\d{5}([0-9])(?!\1)([0-9])\2\1\2\2" "结尾如 233233" "ABC" "\d{7}([0-9]012|[^0]123|[^1]234|[^2]345|[^3]456|[^4]567|[^5]678|[^6]789)" "结尾三连" "ABCABC" "\d{5}(\d{3})\1" "结尾如 345345" "ABCD" "\d{6}([0-9]0123|[^0]1234|[^1]2345|[^2]3456|[^3]4567|[^4]5678|[^5]6789)" "4 连升" "ABCDABCD" "\d{3}(\d{4})\1" "如 25672567" "ABCDE" "\d{6}(01234|12345|23456|34567|45678|56789)" "5 连升" "DCBA" "\d{6}([0-9]9876|[^9]8765|[^8]7654|[^7]6543|[^6]5432|[^5]5678|[^4]3210)" "4 连降" "EDCBA" "\d{6}(43210|54321|65432|76543|87654|98765)" "5 连降序" "不带 4 和 7" "(0|1|2|3|5|6|8|9){11}" "不带 4 和 7" "不带 4 或 7" "(0|1|2|3|5|6|8|9){11}" "手机号码不带 4 或 7" "号段不带四,后四位带四" "1\d{2}[012356789]{4}(4\d{3}|\d4\d\d|\d\d4\d|\d{3}4)" "号段不带四,后四位带四" "号段带四,后四位不带四" "1\d{2}(4\d{3}|\d4\d\d|\d\d4\d|\d{3}4)[012356789]{4}" "号段带四,后四位不带四" "六拖二" "\d{2}([0-9])(?!\1)([0-9])\2{5}(?!\2)([0-9])\3" "如 33333322" "六拖一" "\d{3}([0-9])(?!\1)([0-9])\2{5}(?!\2)([0-9])" "如 5555554" "年份类" "\d{7}((19[5-9][0-9])|(20[0-1][0-9]))" "筛选年份特征的号码" "生日类" "\d{7}(?:0[13578]|1[02])(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)(?:0[1-9]|[12]\d|30)|02(?:0[1-9]|1\d|2[0-8])" "筛选生日特征的号码" "四拖二" "\d{4}([0-9])(?!\1)([0-9])\2{3}(?!\2)([0-9])\3" "结尾如 777744" "四拖一" "\d{5}([0-9])(?!\1)([0-9])\2{3}(?!\2)([0-9])" "结尾如 77774" "五拖二" "\d{3}([0-9])(?!\1)([0-9])\2{4}(?!\2)([0-9])\3" "如 4444422" "五拖一" "\d{4}([0-9])(?!\1)([0-9])\2{4}(?!\2)([0-9])" "结尾如 777774" "以 88 结尾" "\d{9}(88)" "以 88 结尾" "最后一位带四" "\d{10}(4)" "最后一位带四" ``` |
11
LukeChien 2018-08-20 20:07:56 +08:00 via Android
我做过存数据库,MySQL 也支持正则,每个数字一个字段,可以混用,n2=n1+1 and n3=n2+1 and n4=n3+1
|
12
linuxsteam OP @ChangeTheWorld 兄弟 你找的跟我的一样 是易语言开源的正则,我就在用他的修改呢 谢谢。
|
13
linuxsteam OP @panpanpan 逆向思维,点赞。其实我可以自定义的号码就是 6 位 第七位只有两种号码 所以为 10*10*10*10*10*10*2=200W 但是生成 怎么能避免正则这种东西呢
|
14
linuxsteam OP @jiajia94 大佬 真是太谢谢了,这玩意不好写啊。您还抽空给我写这么长的。 看这个复杂程度。我感觉我还写不出这个层次的。何况这还没检测带不带 4。。。
另外大佬您大概写这串 花了多久? |