非典型密码验证regexp:至少3个字母,3个数字,没有双引号

时间:2015-06-20 11:45:06

标签: regex html5 validation input passwords

此正则表达式适用于pattern="..."内的HTML5 < input type="password" ... />应该是:

  1. 不少于8个字符,不超过32个字符。
  2. 必须至少包含3个字母。
  3. 必须至少包含3个数字。
  4. 必须包含除双引号外的其他任何ASCII码(单引号都可以)。
  5. 这就是我所想到的:

    ^ *(?= {8,32})(?=。* [A-ZA-Z] {3,...})(?=。* \ d {3,...})(? =。* [^ \ X22] +)。* $

    但问题出在这里:

    1. 仍然允许使用双引号密码!
    2. 此表达式仅在有三个CONSECUTIVE数字或字母时匹配,而不是在与其他字符穿插时匹配。
    3. 我花了一整天的时间阅读尽可能多的文档:O&#39; Reilly,在线文档等等,如果可以的话,我就要把我的脑袋弄出来#&# 39;弄清楚这一点。

      任何帮助都会非常感激,你会拯救子弹和大脑。

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

^(?=(?:.*?[a-zA-Z]){3})(?=(?:.*?\d){3})[^\x22]{8,32}$

ReGEx Demo

甚至:

^(?=(?:[^a-zA-Z\n]*[a-zA-Z]){3})(?=(?:[^\d\n]*\d){3})[^\x22]{8,32}$

答案 1 :(得分:0)

想出了这件事:

^(?=(.*?[a-zA-Z]){3,})(?=(.*?\d){3,})(?=.*?[^a-zA-Z0-9\"])[^\"]{8,32}$

https://regex101.com/r/nY0bL2/1 - 为了测试重写第一行,多线无论出于何种原因都无效。