【问题标题】:Password regex for specific requirements特定要求的密码正则表达式
【发布时间】:2013-03-13 13:31:02
【问题描述】:

我要为以下要求编写一个正则表达式

  1. 至少一个字符
  2. 至少一位数
  3. 长度必须为 8
  4. 至少一个特殊字符(可以是任何特殊字符)

前三个很简单,但找不到限制至少特殊字符的方法(任何可能的特殊字符,如 ',":*^%>? 等)。

【问题讨论】:

  • 您将无法构造此正则表达式。好吧,理论上你可以,但它既不简单也不可读和可维护。为什么不逐个字符检查密码字符串,看看它是否符合要求?
  • 基本上 a 正则表达式不是适合这项工作的工具。
  • @J0HN:我不敢苟同。这些东西很容易用正则表达式表达。而且它并不比检查每个字符的一个或几个循环更难阅读或维护。可能除了不识字的人。但是你总是可以添加 cmets 来解释意图。
  • @Joey,好吧,你刚刚让我皈依了你的宗教 :) 我没有想到前瞻 :) 实际上我喜欢正则表达式,当它们以正确的方式使用时。 Hoverwer there are some reason 在这种情况下使用字符串循环。

标签: javascript regex


【解决方案1】:

您可以结合使用前瞻来解决这些问题:

  1. (?=.*[a-zA-Z])
  2. (?=.*\d)
  3. .{8}
  4. (?=.*[^\da-zA-Z])

最后一个只需要一个非字母和非数字,这可能是迄今为止指定您想要一个有点“特殊”字符的最简单方法。

所以最后你有

^(?=.*[a-zA-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8}$

【讨论】:

  • 还需要锚点,因为这是 JS。
猜你喜欢
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2011-07-24
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多