处理一个项目,要求我使用pattern属性设置密码字段。 没有真正完成很多正则表达式的东西,并且想知道是否有人可以提供帮助。
该领域的要求如下:
现在,到目前为止,我有以下内容:
[^(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}$
感谢您的帮助
答案 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;
}