有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

密码模式的Java正则表达式

不适用于“至少一个字母、至少一个数字和至少一个特殊字符”和“至少一个数字和至少一个特殊字符”的正则表达式

例如:

String passwordpattern="A9009"; //Not working for  pattern3

注意:应至少检查一个字母、数字和特殊字符

String passwordpattern="A3566523"; //Not working for  pattern4

注意:它应该检查至少一个特殊字符和至少一个数字

    //Alphabets, Digits and Special Characters
            String pattern3 = "[^\\\\w\\\\d]*(([0-9]+.*[A-Za-z]+.*[!#%&'()*+,-:;<=>?@}{]+.*)|[A-Za-z]+.*[0-9]+.*[!#%&'()*+,-:;<=>?@}{]+.*|[!#%&'()*+,-:;<=>?@}{]+.*[A-Za-z]+.*[0-9]+.*|[!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*[A-Za-z]+.*|[A-Za-z]+.*[!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*|[0-9]+.*[!#%&'()*+,-:;<=>?@}{]+.*[A-Za-z]+.*)";

   //Digits and Special Characters
  String pattern4 = "([^\\\\w\\\\d]*(([!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*)|[0-9]+.*([!#%&'()*+,-:;<=>?@]+.*)))";

共 (2) 个答案

  1. # 1 楼答案

    对于这些类型的断言,最好使用lookahead assertions

    "At least one Alphabets,At least one Digits and At least one Special Characters"

    ^(?=.*\pL)(?=.*\d)(?=.*\W).+$
    

    \pL匹配任何unicode字母,\d匹配任何数字,\W匹配任何非单词字符

    at least one Special character and at least Digit

    ^(?=.*\d)(?=.*\W).+$
    

    注意,在使用matches方法时,不需要使用锚

  2. # 2 楼答案

    此正则表达式模式将执行您想要的操作-仅当给定字符串输入中至少有一个字母、一个数字和一个特殊字符时才匹配:

    ^(?=.)[a-zA-Z]+[0-9]+[^\w]+[^\s]+