gpt4 book ai didi

java - 密码的正则表达式 3 个 3 类别中至少有一个字符

转载 作者:行者123 更新时间:2023-12-02 10:28:49 25 4
gpt4 key购买 nike

我需要一个正则表达式来检查:包含以下三 (4) 个类别中的至少一 (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~`!@#$%^&*()+=_{}\[\]\:;”’?\/<>,.-])

这里它检查密码是否包含小写、大写,然后在剩余的集合中,数字和特殊字符可以组合,因为我们只需要任何一个字符在数字或特殊字符集中匹配。

相同的逻辑可以应用不同的字符集形式,并一起交替以匹配任何组合,从而使您的密码有效。

<强> Here is a working online demo

我采取了各种示例来说明,如果密码仅属于两个字符集,则密码将不匹配,并且只要包含剩余字符集中的一个字符,它就会开始匹配。

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

关于java - 密码的正则表达式 3 个 3 类别中至少有一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53723779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com