haoyuan2012 2017-09-15 00:44 采纳率: 0%
浏览 10696
已结题

至少包括字母数字特殊字符中任意2种的正则表达式

/(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{7,20}$/
这个正则表达式规定了必须包括字母数字特殊字符中任意2种组合,这个表达式是从网上找的,经过测试是可以用的,但是看不懂什么意思,请高手给予解析、指点!

  • 写回答

7条回答

  • 我不喜欢这个世界 2017-09-15 04:12
    关注

    我先给你举个例子,比如9Asb123456这个密码段。
    你用第一部分匹配出来的是9
    第二部分匹配了9Asb123456(也就是所有)
    为什么这样能实现呢?
    原因是这样的:
    首先你要求的条件是至少匹配两个不同的字符类型。
    也就是说你的第一部分匹配出的9表示第一种字符数字,
    这时候就证明你的字符串9后面是其他字符
    也就说明了我检查出来9这个数字,就可以确认密码段含有两种类型了,
    (不管9后面有多少种类型,它目前已经至少满足是两种类型了)
    这时候结合你的第二部分匹配,,检查是否位数足够,检查9后面的是否有非法字符类型,比如空格
    就可以证明了9Asb123456是合格的

    还有一个问题?
    如果我把密码段改成123456789
    你的第一部分匹配到的就是123456789整个数字类型,第一部分通过
    第二部分匹配的结果也是123456789,这时候满足了位数,并不满足类型
    所以你还要有个判断,你的第一部分匹配结果得到的长度不能和第二部分匹配结果得到的长度相同。

    评论

报告相同问题?

问题事件

  • 请选择合适的标签 12月14日

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?