gpt4 book ai didi

正则表达式: "password must have at least 3 of the 4 of the following"

转载 作者:行者123 更新时间:2023-12-02 10:47:33 26 4
gpt4 key购买 nike

我是正则表达式新手,到目前为止只将它用于简单的事情,例如“必须是数字或字母”。现在我必须做一些更复杂的事情。

我需要使用它来验证密码,密码必须为 8-16 个字符,不含控制/非打印/非 ASCII 字符,并且必须至少具有以下三个:

  • 一个大写字母
  • 一个小写字母
  • 一个数字 0-9
  • 一个符号字符($、%、& 等)

我在想我要做的就是写一些类似“一个大写字母,小写字母和数字,或者一个大写字母,小写字母和一个符号,或者一个大写字母,一个数字或一个符号,OR。 ...”以涵盖所有可能的“4 中的 3”组合,但这似乎过多。有没有更简单的解决方案?

最佳答案

正确的方法是分别检查所有五个条件。但是,我认为您需要正则表达式是有原因的,在这里:

/^((?=.*[A-Z])(?=.*[a-z])(?=.*\d)|(?=.*[a-z])(?=.*\d)(?=.*[\$\%\&])|(?=.*[A-Z])(?=.*\d)(?=.*[\$\%\&])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\$\%\&])).{8,16}$/

说明:

  • 我们想要匹配整个内容,因此我们用 ^$ 包围它
  • .{n,m} 匹配 nm 字符(在我们的例子中为 8 和 16)。
  • 检查字符串是否包含某些内容(无需实际匹配)的一般方法是使用正向先行 (?=.*X),其中 X 是你想检查的事情。例如,如果您想确保字符串包含小写字母,您可以执行 (?=.*[a-z])
  • 如果你想检查一个字符串是否包含XYZ,但实际上并没有匹配它们,你可以使用前面的通过附加三个前瞻来实现(?=.*X)(?=.*Y)(?=.*Z)
  • 我们使用上面的内容来匹配提到的四件事中的三件事。我们用|(或)来检查所有可能的组合 - cCD|cDS|CDS|CcS(c = 小写字母,C = 大写字母,D = 数字,S = 特殊)

See it in action

关于正则表达式: "password must have at least 3 of the 4 of the following",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191248/

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