我目前使用这个正则表达式来检查字符串是否符合一些条件。
条件是
字符串长度必须介于 8 到 15 个字符之间。
字符串必须至少包含一个数字。
字符串必须至少包含一个大写字母。
字符串必须至少包含一个小写字母。
(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,15})$
它在大多数情况下都有效,但不允许特殊字符。非常感谢任何修改此正则表达式以允许特殊字符的帮助。
这里似乎有很多混乱。到目前为止我看到的答案没有正确执行 1+ 数字/1+ 小写/1+ 大写规则,这意味着密码像abc123, 123XYZ, or AB&^#* 仍会被接受。防止全部小写、全部大写或全部数字是不够的;您必须强制执行其中至少一个的存在。
请尝试以下操作:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,15}$
如果您还想需要至少一个特殊字符(这可能是个好主意),请尝试以下操作:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$
The .{8,15}
如果您愿意,可以设置更多限制(例如,您可以将其更改为\S{8,15}
禁止空格),但请记住,这样做会降低密码方案的强度。
我已经测试了这种模式,它按预期工作。
Edit:一张小纸条,easiest做到这一点的方法是使用 3 个独立的正则表达式和字符串的Length
财产。它也更容易阅读和维护,所以如果可以的话就这样做。但是,如果这是用于标记中的验证规则,那么您可能会陷入单个正则表达式的困境。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)