靓号正则表达式匹配 疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linuxsteam
V2EX    正则表达式

靓号正则表达式匹配 疑问

  •  
  •   linuxsteam 2018-08-20 09:35:33 +08:00 4811 次点击
    这是一个创建于 2609 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在在写类似靓号规则的正则。

    尾数 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 条附言    2018-08-21 11:53:19 +08:00
    其实我总结了一下。
    正则是可以做这个的,但是用于处理 74 种分类方法。还是挺耗费时间和我的能力是否能完成都是不肯定的。
    第 2 条附言    2018-08-21 12:13:38 +08:00
    我现在考虑两种思路:
    批量生成:最多 200W 条,对于计算机不是问题。
    正则匹配:如题目。

    经过大家的回复和指点,其实我发现我纠结的问题,又清晰了,就是上述方法,写出的东西是否可以"复用"?

    例如 末尾 6 连是最好写的。但是最低级号码类别,最简单思路。就是排除其他高级号码的规则。我这种思路也就是复用其他高级号码的规则。直接无脑排除就好。

    如果还要新写一个正则或者新写一个生成规则的话。我感觉工期更不上,而且也会被领导认为无能。
    14 条回复    2018-08-21 11:49:59 +08:00
    linuxsteam
        1
    linuxsteam  
    OP
       2018-08-20 09:41:50 +08:00
    我先说一下我的思路,
    先把好匹配的高级靓号筛选出来、
    然后使用(?!4 连靓号|5 连靓号|6 连靓号) 这样的方法排除高级靓号。

    不知道这种思路是否可行?

    小弟想求长辈指导思路。我感觉我先写便宜号码的思路貌似是不对的。
    sagaxu
        2
    sagaxu  
       2018-08-20 09:54:57 +08:00 via Android
    根本不该用正则做
    linuxsteam
        3
    linuxsteam  
    OP
       2018-08-20 09:58:19 +08:00
    @sagaxu 那应该用什么呀,我现在没啥思路。我现在已经局限于正则了
    SorcererXW
        4
    SorcererXW  
       2018-08-20 11:41:16 +08:00 via Android
    @linuxsteam 不用 regexp 的话,可以从头到尾遍历一遍呀,检测特征就标记一下,最后做个判断,甚至可以给号码打分
    otakustay
        5
    otakustay  
       2018-08-20 12:12:55 +08:00
    @linuxsteam 自己写个函数做啊,一个函数里用不同正则一一测试也成的啊
    jiajia94
        6
    jiajia94  
       2018-08-20 12:47:32 +08:00
    一个正则匹配尾数 11、22、33、44、55、77,另一个正则匹配没有 3 连的号码,两个都命中才算~
    manhere
        7
    manhere  
       2018-08-20 12:50:33 +08:00
    不用正则,先把可能的靓号组合生成一个列表,简单比对包含关系就行了
    jiajia94
        8
    jiajia94  
       2018-08-20 13:16:45 +08:00   1
    ^(?:(?!(\d)\1\1).)*?(\d)(?!\2)(1|2|3|4|5|7)\3$ 这个正则也行~
    panpanpan
        9
    panpanpan  
       2018-08-20 13:43:38 +08:00
    生成一百万号码出来,然后给每个靓号都做标记,需要的时候直接用 tag 取。
    ChangeTheWorld
        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)" "最后一位带四"
    ```
    LukeChien
        11
    LukeChien  
       2018-08-20 20:07:56 +08:00 via Android
    我做过存数据库,MySQL 也支持正则,每个数字一个字段,可以混用,n2=n1+1 and n3=n2+1 and n4=n3+1
    linuxsteam
        12
    linuxsteam  
    OP
       2018-08-21 11:45:29 +08:00
    @ChangeTheWorld 兄弟 你找的跟我的一样 是易语言开源的正则,我就在用他的修改呢 谢谢。
    linuxsteam
        13
    linuxsteam  
    OP
       2018-08-21 11:47:25 +08:00
    @panpanpan 逆向思维,点赞。其实我可以自定义的号码就是 6 位 第七位只有两种号码 所以为 10*10*10*10*10*10*2=200W 但是生成 怎么能避免正则这种东西呢
    linuxsteam
        14
    linuxsteam  
    OP
       2018-08-21 11:49:59 +08:00
    @jiajia94 大佬 真是太谢谢了,这玩意不好写啊。您还抽空给我写这么长的。 看这个复杂程度。我感觉我还写不出这个层次的。何况这还没检测带不带 4。。。
    另外大佬您大概写这串 花了多久?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5534 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 09:00 PVG 17:00 LAX 02:00 JFK 05:00
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86