组合多个RegEx表达式来限制密码

时间:2014-10-08 19:57:44

标签: regex

我需要在我正在处理的MVC网站上的模型中的属性上放置一个RegEx表达式。

表达的不同部分对我个人有意义,但我无法弄清楚如何将它们组合在一起。

我需要能够将输入限制为字母,大写字母,数字和符号@。 _ -

然后我需要确保用户的输入符合以下条件

  1. 输入必须包含1个大写字母
  2. 输入必须包含1个小写字母
  3. 输入必须包含1个数字
  4. 输入必须包含允许的4个符号之一。
  5. 我已经尝试了

    "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@-_.])[A-Za-z\\d@-_.]{8,}"
    

    但最终让密码不包含4个符号中的一个。

2 个答案:

答案 0 :(得分:1)

你需要逃避你的正则表达式中的特殊字符。 更新了正则表达式:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@\-_.])[A-Za-z\\d@\-_.]{8,}"

答案 1 :(得分:0)

[@-_.]匹配句点.)或@_范围内的任何字符。这包括所有大写ASCII字母加方括号,反斜杠,插入符号(^),当然还有@_。要匹配文字连字符,可以使用反斜杠([@\-_.])转义连字符,或将其移到列表末尾([@_.-])。