正则表达式密码问题

时间:2013-10-25 09:25:47

标签: regex

处理一个项目,要求我使用pattern属性设置密码字段。 没有真正完成很多正则表达式的东西,并且想知道是否有人可以提供帮助。

该领域的要求如下:

  • 不能包含“密码”一词
  • 长度必须为8-12
  • 必须有1个大写
  • 必须有1个小写
  • 必须有1位数

现在,到目前为止,我有以下内容:

[^(password)].(?=.*[0-9])?=.*[a-zA-Z]).{8,12}

这不起作用。除了匹配的密码字符串之外,我们可以得到它所以其他所有工作。

提前致谢, 安迪

编辑:我们现在使用的方法(嵌套在下面的评论中)是:     ^(?!.*(P|p)(A|a)(S|s)(S|s)(W|w)(O|o)(R|r)(D|d)).(?=.*\d)(?=.*[a-zA-Z]).{8,12}$

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

使用一系列锚定前瞻:必须包含“条件:

^(?!.*(?i)password)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,12}$

我已将“忽略大小写”切换(?i)添加到“密码”要求中,因此无论字母大小写,它都会拒绝该字。

答案 1 :(得分:1)

这个正则表达式应该用于工作:

^(?!.*password)(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{8,12}$

它将匹配:

^               // from the beginning of the input 
(?!.*password)  // negative lookbehind whether the text contains password
(?=.*\d+)       // positive lookahead for at least one digit
(?=.*[A-Z]+)    // positive lookahead for at least one uppercase letter
(?=.*[a-z]+)    // positive lookahead for at least one lowercase letter
.{8,12}         // length of the input is between 8 and 12 characters
$

链接到phpliveregex

答案 2 :(得分:0)

试试这个:

^(?!.*password)(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,12}$

解释

^                         Start anchor
(?=.*[A-Z])               Ensure string has one uppercase letter
(?=.*[0-9])               Ensure string has one digits.
(?=.*[a-z])               Ensure string has one lowercase letter
{8,12}                    Ensure string is of length 8 - 12.
(?!.*password)            Not of word password
$                         End anchor.

答案 3 :(得分:0)

试试这种方式

        Public void validation()
        string xxxx = "Aa1qqqqqq";
        if (xxxx.ToUpper().Contains("password") || !(xxxx.Length <= 12 & xxxx.Length >= 8) || !IsMatch(xxxx, "(?=.*[A-Z])") || !IsMatch(xxxx, "(?=.*[a-z])") || !IsMatch(xxxx, "(?=.*[0-9])"))
        {
             throw new System.ArgumentException("Your error message here", "Password");
        }
        }

        public bool IsMatch(string input, string pattern)
        {
          Match xx = Regex.Match(input, pattern);
          return xx.Success;
         }