以下正则表达式要求密码有1个数字,1个字符(大写或小写),最小长度为8个。但是如果我输入一个特殊的char,它会返回false。我不想要一个特殊的字符,但我想在这种情况下允许它。如何更改此正则表达式以允许特殊字符?
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,}$")
答案 0 :(得分:6)
将“\ w”更改为“。”应该这样做:
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$")
\ w匹配“单词”字符,这些字符通常不会与特殊字符匹配(取决于您对“特殊”和您正在使用的语言的定义)。
。将匹配除换行符之外的任何字符
答案 1 :(得分:4)
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$")
答案 2 :(得分:4)
为什么不进行3次单独检查,这样您就可以清楚地检查密码是否符合所需参数但无需维护大型正则表达式?
if (Regex.IsMatch(Password, "\d") &&
Regex.IsMatch(Password, "\w") &&
Password.length >= 8) //psuedo-code
这不会限制任何字符。它检查密码是否至少包含一个单词字符,至少一个数字,并且长度至少为8个字符。
答案 3 :(得分:3)
Toran,如果您不想在密码中使用空格,请使用以下命令:
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]\S{8,}$")