非典型密码验证正则表达式:至少 3 个字母、3 个数字、无双引号
An atypical password validation regexp: at least 3 letters, 3 numbers, no double-quotes
此正则表达式适用于 < input type="password" ... />
中的 HTML5 pattern="..."
,应该是:
- 不少于8个字符,不超过32个。
- 必须至少包含 3 个字母。
- 必须至少包含 3 个数字。
- 必须包含除双引号以外的任何其他 ASCII 字符(单引号即可)。
这就是我想象的:
^.*(?=.{8,32})(?=.*[a-zA-Z]{3,})(?=.*\d{3, })(?=.*[^\x22]+).*$
但是问题来了:
- 密码中仍然允许使用双引号!
- 此表达式仅在三个连续的数字或字母时才匹配,而当它们与其他字符穿插时不匹配。
我花了一整天的时间阅读尽可能多的文档:O'Reilly 的、在线文档等,如果我无法弄清楚这一点,我将要绞尽脑汁。
任何帮助将不胜感激,您将节省一颗子弹和一个大脑。
您可以使用这个正则表达式:
^(?=(?:.*?[a-zA-Z]){3})(?=(?:.*?\d){3})[^\x22]{8,32}$
甚至:
^(?=(?:[^a-zA-Z\n]*[a-zA-Z]){3})(?=(?:[^\d\n]*\d){3})[^\x22]{8,32}$
想出了这个东西:
^(?=(.*?[a-zA-Z]){3,})(?=(.*?\d){3,})(?=.*?[^a-zA-Z0-9\"])[^\"]{8,32}$
https://regex101.com/r/nY0bL2/1 - 为了测试重写第一行,多行不管出于什么原因都不能正常工作。
此正则表达式适用于 < input type="password" ... />
中的 HTML5 pattern="..."
,应该是:
- 不少于8个字符,不超过32个。
- 必须至少包含 3 个字母。
- 必须至少包含 3 个数字。
- 必须包含除双引号以外的任何其他 ASCII 字符(单引号即可)。
这就是我想象的:
^.*(?=.{8,32})(?=.*[a-zA-Z]{3,})(?=.*\d{3, })(?=.*[^\x22]+).*$
但是问题来了:
- 密码中仍然允许使用双引号!
- 此表达式仅在三个连续的数字或字母时才匹配,而当它们与其他字符穿插时不匹配。
我花了一整天的时间阅读尽可能多的文档:O'Reilly 的、在线文档等,如果我无法弄清楚这一点,我将要绞尽脑汁。
任何帮助将不胜感激,您将节省一颗子弹和一个大脑。
您可以使用这个正则表达式:
^(?=(?:.*?[a-zA-Z]){3})(?=(?:.*?\d){3})[^\x22]{8,32}$
甚至:
^(?=(?:[^a-zA-Z\n]*[a-zA-Z]){3})(?=(?:[^\d\n]*\d){3})[^\x22]{8,32}$
想出了这个东西:
^(?=(.*?[a-zA-Z]){3,})(?=(.*?\d){3,})(?=.*?[^a-zA-Z0-9\"])[^\"]{8,32}$
https://regex101.com/r/nY0bL2/1 - 为了测试重写第一行,多行不管出于什么原因都不能正常工作。