【发布时间】:2020-12-24 21:59:30
【问题描述】:
我正在研究 javascript 正则表达式,其中包括以下条件。到目前为止没有运气。
-允许的最小字符数为 8。
-允许的最大字符数为 64。
- 输入的文本应至少包含以下两项 - 数字、小写字母、大写 字母、特殊字符。
-不支持输入符号。
到目前为止,我所拥有的是@anubhava 答案here。
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,63}$
此正则表达式将强制执行以下规则:
-至少一个大写英文字母,(?=.*?[A-Z])
-至少一个小写英文字母,(?=.*?[a-z])
-至少一位数字,(?=.*?[0-9])
-至少一个特殊字符,(?=.?[#?!@$%^&-])
-最少八个长度。{8,63}(带有锚点)
我的问题是如何满足我的第三和第四个条件:-
- 输入的文本应至少包含以下两项 - 数字、小写字母、大写 字母、特殊字符。
-不支持输入符号。
任何帮助将不胜感激。
【问题讨论】:
-
不可能做到简洁。我会改用编程逻辑。
-
知道如何在 .NET 中进行操作吗?
-
(?=.*?\d.*?\d)应该匹配“2 个数字”,不是吗? -
另外,考虑 Unicode 类别,因为不是每个人都使用相同的字符..
-
对于.NET(不知道为什么在这种情况下问题被标记为JS..),可以使用简单的循环和
char.GetUnicodeCategory或其他方法将输入转换为基于字符类的直方图分类(包括更具体的规则)。或者通过一些string#IndexOf调用等绕过直方图。
标签: javascript regex passwords