Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 三个类别中至少一个字符的密码正则表达式_Java_Regex - Fatal编程技术网

Java 三个类别中至少一个字符的密码正则表达式

Java 三个类别中至少一个字符的密码正则表达式,java,regex,Java,Regex,我需要一个正则表达式来检查:至少包含以下三个类别中的一个1字符: 大写字母A-Z 小写字母a-z 数字0-9 特殊字符~`!@$%^&*+=_-{}[]\|:;”’?/,. 不强制要求所有4个类别中都有密码,至少3个类别中都可以,因为您需要四个条件中的任何一个。如果满足任何三个条件,那么它应该接受密码,您需要提前查看所有不同的排列/组合。你可以用这个正则表达式 ^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[\d~`!@#$%^&*()+=_{}\[\]\|:;”’?\/

我需要一个正则表达式来检查:至少包含以下三个类别中的一个1字符:

大写字母A-Z 小写字母a-z 数字0-9 特殊字符~`!@$%^&*+=_-{}[]\|:;”’?/,.
不强制要求所有4个类别中都有密码,至少3个类别中都可以,因为您需要四个条件中的任何一个。如果满足任何三个条件,那么它应该接受密码,您需要提前查看所有不同的排列/组合。你可以用这个正则表达式

^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[\d~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])|(?=.*[a-z])(?=.*\d)(?=.*[A-Z~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])|(?=.*[a-z])(?=.*[~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])(?=.*[A-Z\d])|(?=.*[A-Z])(?=.*\d)(?=.*[a-z~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])|(?=.*[A-Z])(?=.*[~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])(?=.*[a-z\d])|(?=.*\d)(?=.*[~`!@#$%^&*()+=_{}\[\]\|:;”’?\/<>,.-])(?=.*[a-zA-Z])).*$
正如您所看到的,正则表达式变得太大,无法解释,让我简单介绍一下这里应用的概念

由于有四个字符集,如果密码包含任意三个字符中的至少一个字符,则您接受,因此您需要进行前瞻性检查,以检查两个字符集,然后第三个字符集可以与剩余的两个字符集组合,以检查是否至少有一个字符来自剩余的字符集。并将这种逻辑应用于所有此类排列,并交替所有情况。让我再拿一个例子来解释一下。像这样,

(?=.*[a-z])(?=.*[A-Z])(?=.*[\d~`!@#$%^&*()+=_{}\[\]\:;”’?\/<>,.-])
在这里,它检查密码是否包含小写,大写,然后在剩余的集合中,可以组合数字和特殊字符,因为我们只需要在数字或特殊字符集中匹配任何一个字符

相同的逻辑可以应用于不同形式的字符集,并一起交替匹配任何组合,以确保密码的有效性

我通过各种示例来说明,如果密码只属于两个字符集,则密码将不匹配,并且仅在剩余字符集中包含一个字符后,密码将开始匹配


希望这有帮助。如果您有任何疑问,请告诉我。

为什么必须使用正则表达式?这是要求的一部分吗?从三个方面检查它。你有四个类别。你的意思是四个字吗?四个类别中至少有一个字符,但至少有三个类别必须考虑到这一点:四分之三应该更加强调,至少有一个答案已经漏掉了。再说一遍,为什么必须是正则表达式?如果没有regexabcAB1234,则会简单得多。应该是有效的,可以是从3开始的最小值categories@jahoza:好的,你的帖子上没有明确这个要求。让我修改正则表达式。