Html5模式,以任何顺序检查至少2位数和至少4个字母

时间:2016-09-07 20:27:49

标签: regex html5 validation

我使用Html5模式验证密码,我需要确保该字符串包含至少2个数字和至少4个字母的任何顺序。

我做了,这是我到目前为止所做的:[a-z]{4,}[0-9]{2,}|[0-9]{2,}但我需要它以任何顺序,例如:9pog8k

如果我有任何顺序的2个数字和4个字母,那么无论我有什么其他的都可以。

谢谢!

1 个答案:

答案 0 :(得分:3)

[a-z]{4,}[0-9]{2,}|[0-9]{2,}匹配4个或更多字母+ 2个或更多个数字,或2个或更多个数字,从开始将结束,因为pattern正则表达式默认为锚定。

您需要使用 lookaheads 来实际检查字符串中是否出现任何图案,而不是简单的替换:

input:valid {
  color: green;
}
input:invalid {
  color: red;
}
<form name="form1"> 
 <input pattern="(?=(?:[^a-zA-Z]*[a-zA-Z]){4})(?=(?:\D*\d){2}).*" title="Min. 2 digits and min. 4 letters are required"/>
 <input type="Submit"/> 
</form>

HTML5模式属性需要完整的字符串匹配,因此最后需要.*

模式详情

  • (?=(?:[^a-zA-Z]*[a-zA-Z]){4}) - 必须有4个0+非字母序列后跟一个字母
  • (?=(?:\D*\d){2}) - 必须有2个0+非数字序列,后跟数字
  • .* - 匹配任何字符,0 +出现次数