我使用Html5模式验证密码,我需要确保该字符串包含至少2个数字和至少4个字母的任何顺序。
我做了,这是我到目前为止所做的:[a-z]{4,}[0-9]{2,}|[0-9]{2,}
但我需要它以任何顺序,例如:9pog8k
。
如果我有任何顺序的2个数字和4个字母,那么无论我有什么其他的都可以。
谢谢!
答案 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 +出现次数