搜索

首页  >  问答  >  正文

java正则表达式问题?

用正则表达式构造匹配:

  1. 密码必须由数字、字符、特殊字符三种同时存在组成;

  2. 密码长度不能少于8个字符;

PHPzPHPz2895 天前394

全部回复(5)我来回复

  • 高洛峰

    高洛峰2017-04-18 09:09:48

    雷雷

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:09:48

    验证了下, @菩提旭光 的回答是不正确的, 例如hello123就能匹配, 但并不满足要求. 而且 8个空格也能匹配, 但并不满足要求, 你也没办法把所有特殊符号都添加进去.hello123就能匹配, 但并不满足要求. 而且 8个空格也能匹配, 但并不满足要求, 你也没办法把所有特殊符号都添加进去.

    虽然可以加入(?=[a-zA-Z0-9_#@]+)

    虽然可以加入(?=[a-zA-Z0-9_#@]+)来保证密码不会包含除指定外的特殊符号, 但仍然无法保证它必须有三种符号.

    不全是数字/字母/特殊符号, 结果是只要包含2种以上符号即可.

    事实上, 这不是一个正则的问题, 参考相似问题🎜

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:09:48

    把6种情况都列一遍

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:09:48

    @菩提旭光 的思路是对的,把negative lookahead换成positive lookahead,再稍微调整一下就行了。
    (?=.d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}

    回复
    0
  • 迷茫

    迷茫2017-04-18 09:09:48

    我觉得这个问题不应该用正则表达式来解决,每种工具都有非常适合使用的场景,我觉得在你这个场景里面并不适合用正则表达式去解决,用简单的if语句去判断,实现简单,而且可读性非常好,为什么一定要用正则表达式呢!?

    回复
    0
  • 取消回复