首先,我找到了几个与我的查询相关的例子。但是没有一个是有用的。
请你帮我创建一个满足以下3个条件的正则表达式:
我相信以下正则表达式可用于验证第三个条件:
\A(?=\w{9,9}\z)
但我无法弄清楚如何结合多种条件。
答案 0 :(得分:4)
您可以使用以下正则表达式:
^(?=[^\r\na-zA-Z]*[a-zA-Z][^\r\na-zA-Z]*)(?=.*[0-9].*).{9}$
或者,如果您不允许除数字和字母以外的任何内容:
^(?=[^\r\na-zA-Z]*[a-zA-Z][^\r\na-zA-Z]*)(?=.*[0-9].*)[0-9a-zA-Z]{9}$
说明:
^
- 字符串开始(?=[^\r\na-zA-Z]*[a-zA-Z][^\r\na-zA-Z]*)
- 确保9个字符的字符串中只有一个字母(?=.*[0-9].*)
- 确保有数字[0-9a-zA-Z]{9}
- 字符串长度为9个字符(仅允许数字和字符)
(或.{9}
- 将允许任何字符)$
- String end 请注意,为了在regex101上进行更可靠的测试,添加了[^\r\n]
,如果您测试单个字符串(不是多行列表),则可以使用^(?=[^a-zA-Z]*[a-zA-Z][^a-zA-Z]*)(?=.*[0-9].*)[0-9a-zA-Z]{9}$
。
function isValidPassword(str) {
return /^(?=[^\r\na-zA-Z]*[a-zA-Z][^\r\na-zA-Z]*$)(?=.*[0-9].*$)[0-9a-zA-Z]{9}$/.test(str);
}
document.getElementById("res").innerHTML = "3445345f3 is " + isValidPassword('3445345f3') + "<br>222222222 is " + isValidPassword("222222222");
&#13;
<div id="res"/>
&#13;