正则表达式满足多个条件

时间:2015-04-10 07:47:02

标签: regex

首先,我找到了几个与我的查询相关的例子。但是没有一个是有用的。

请你帮我创建一个满足以下3个条件的正则表达式:

  1. 字符串必须只包含一个字母字符
  2. 字符串必须包含数字
  3. 字符串必须为9长
  4. 我相信以下正则表达式可用于验证第三个条件: \A(?=\w{9,9}\z)

    但我无法弄清楚如何结合多种条件。

1 个答案:

答案 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}$

Demo

说明:

  • ^ - 字符串开始
  • (?=[^\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;
&#13;
&#13;