使用regex c#validation密码
这必须简单,我希望它以同样的方式工作,但它并没有帮助我。
using System; using System.Text.RegularExpressions;
我需要password validation regular expression
,在某些条件下 –
1)必须至少包含一个数字
2)一个大写字母
3)长8个字符。
public class Program { public static bool IsValidPassword(string plainText) { Regex regex = new Regex(@"^(.{0,7}|[^0-9]*|[^AZ])$"); Match match = regex.Match(plainText); return match.Success; } public static void Main() { Console.WriteLine(IsValidPassword("shing")); //logs 'True' always } }
我从这个来源采取了正则表达式 – 密码必须是8个字符,包括1个大写字母,1个特殊字符,字母数字字符
问题是它总是返回’True’,并且我发送给方法的字符串无效。
如果我正在使用正则表达式做错了,请帮助我。
请在这里玩 – https://dotnetfiddle.net/lEFYGJ
我建议您创建单独的模式来validation密码:
var input = "P@ssw0rd"; var hasNumber = new Regex(@"[0-9]+"); var hasUpperChar = new Regex(@"[AZ]+"); var hasMinimum8Chars = new Regex(@".{8,}"); var isValidated = hasNumber.IsMatch(input) && hasUpperChar.IsMatch(input) && hasMinimum8Chars.IsMatch(input); Console.WriteLine(isValidated);
正则表达式存在问题
Regex regex = new Regex(@"^(.{0,7}|[^0-9]*|[^AZ])$");
你应用了角色|
这意味着或者。
形成维基
| – 选择(也称为交替或集合并)运算符匹配运算符之前的表达式或表达式之后的表达式。 例如,abc | def匹配“abc”或“def”。
这意味着在你的正则表达式中它匹配.{0,7}
part或[^0-9]*|[^AZ]
– 这就是为什么它在任何情况下都返回true。
你可以使用这个正则表达式:
^(?=.*?[AZ])(?=.*?[az])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
此正则表达式将强制执行以下规则:•至少一个大写英文字母•至少一个小写英文字母•至少一个数字•至少一个特殊字符•最小长度为8
来自: 密码的正则表达式必须包含至少8个字符,至少1个数字以及大写和小写字母和特殊字符
我创建了一个简单的方法来validation所有类型的密码。 您可以编辑您的限制。 请找到下面给出的代码。
private bool ValidatePassword(string password, out string ErrorMessage) { var input = password; ErrorMessage = string.Empty; if (string.IsNullOrWhiteSpace(input)) { throw new Exception("Password should not be empty"); } var hasNumber = new Regex(@"[0-9]+"); var hasUpperChar = new Regex(@"[AZ]+"); var hasMiniMaxChars = new Regex(@".{8,15}"); var hasLowerChar = new Regex(@"[az]+"); var hasSymbols = new Regex(@"[!@#$%^&*()_+=\[{\]};:<>|./?,-]"); if (!hasLowerChar.IsMatch(input)) { ErrorMessage = "Password should contain At least one lower case letter"; return false; } else if (!hasUpperChar.IsMatch(input)) { ErrorMessage = "Password should contain At least one upper case letter"; return false; } else if (!hasMiniMaxChars.IsMatch(input)) { ErrorMessage = "Password should not be less than or greater than 12 characters"; return false; } else if (!hasNumber.IsMatch(input)) { ErrorMessage = "Password should contain At least one numeric value"; return false; } else if (!hasSymbols.IsMatch(input)) { ErrorMessage = "Password should contain At least one special case characters"; return false; } else { return true; } }
好的,发现是表达的变化。 @mmdemirbas在这里做了一个很好的解释 –
密码必须为8个字符,包括1个大写字母,1个特殊字符,字母数字字符
( # Start of group (?=.*\d) # must contain at least one digit (?=.*[AZ]) # must contain at least one uppercase character (?=.*\W) # must contain at least one special symbol . # match anything with previous condition checking {8,8} # length at least 8 characters and also maximum of 8 ) # End of group
我现在的结束表达是 –
((?=.*\d)(?=.*[AZ]).{8,50})
谢谢大家的光临。
在这里工作 – https://dotnetfiddle.net/lEFYGJ
你可以用这个,
^(?=.*[az])(?=.*[AZ])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$