请教大佬正则问题

@Ta 2020-06-11发布,2020-06-12修改 4371点击
看到手机短信中验证码类的短信被收集到了一块,并且提取出了验证码内容展示给用户,于是乎自己写了写正则,规则如下:

1.短信中包含验证码三个字符
2.验证码为4到多位字母,数字或字母数字混合格式

var reg = /(?<=(?:.*验证码.*))[a-zA-Z0-9]{4,}|[a-zA-Z0-9]{4,}(?=(?:.*验证码.*))/


对于上面自己写的正则疑问有如下两点:

1.如果碰到像2345浏览器这种短信验证,其中出现2345这种非验证码字串该怎么办

2.原子组不是有默认编号吗,有重复匹配规则不是可以用 \1 \2 来代替吗,为啥我改成如下格式就不行了

var reg = /(?<=(?:.*验证码.*))([a-zA-Z0-9]{4,})|\2(?=\1)/


分享一个讲正则特别棒的视频:B站搜后盾人

回复列表(12|隐藏机器人聊天)
  • @Ta / 2020-06-11 / /
    习惯性@穴儿
  • @Ta / 2020-06-11 / /
    @o,带上工兵铲铲,即刻出发
  • @Ta / 2020-06-11 / /
    习惯性@穴儿 
    yourTail
  • @Ta / 2020-06-11 / /
    习惯性@穴儿



     来来来,py交易啊
  • @Ta / 2020-06-11 / /

    @蛋黄派@虎老会泳游@梦浪的小虾米,打屎在座的各位。。

    - - blog:LDXW.TOP
  • @Ta / 2020-06-12 / /

    最后条正则不存在\2吧,,,
    正则也不能判断数字是否是连续的,肯定要用程序,,要不你给来个集合(?!.*(1234|2345|3456))这样的,,所有可能都列出来。。

    我们有着共同的敌人——天命;
    你却认命了,还对我说天命不可违‮

  • @Ta / 2020-06-12 / /
    @乄杺,可以匹配连续数字啊,匹配不成功会返回null
  • @Ta / 2020-06-13 / /
    那就只能例外匹配了
  • @Ta / 2020-06-13 / /

    很多匹配规则和排除规则,一点一点积累下来的
    huawei mate 20pro

  • @Ta / 2020-06-14 / /
    你这思路首先就不对,因为短信首先对号码进行判断了,无法判断的再对信息内容判断,比如包含了“验证码”等字眼的信息,最后再提取内容,肯定会做上下文理解的,现在都是ai时代了
  • @Ta / 2020-06-14 / /
    @echo醉老仙,我已经测试了。。。起码MIUI是不对手机号验证,只要内容出现验证码字眼,并且内容中有字母数字混合或者纯字母和纯数字都会提取为验证码
  • @Ta / 2020-06-16 / /
    @蛋黄派,miui就这样的,其他手机比如ov就强的多,另外就是现在短信都对服务号码进行归档处理,就说明是对号码进行了识别的,不可能不识别
添加新回复
回复需要登录