这一定很简单,我希望它以同样的方式工作,但它并没有帮助我.
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]*|[^A-Z])$"); Match match = regex.Match(plainText); return match.Success; } public static void Main() { Console.WriteLine(IsValidPassword("shing")); //logs 'True' always } }
我已经采取了正则表达式从这个源- 密码必须为8个字符,包括1个大写字母,特殊字符,字母数字字符
问题是它总是返回'True'并且我发送给方法的字符串无效.
如果我正在使用正则表达式做错了,请帮助我.
请在这里玩 - https://dotnetfiddle.net/lEFYGJ
我建议您创建单独的模式来验证密码:
var input = "P@ssw0rd"; var hasNumber = new Regex(@"[0-9]+"); var hasUpperChar = new Regex(@"[A-Z]+"); 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]*|[^A-Z])$");
你应用的字符|
意味着或者.
形成维基
| - 选择(也称为交替或集合并)运算符匹配运算符之前的表达式或运算符之后的表达式.例如,abc | def匹配"abc"或"def".
这意味着在你的正则表达式中它或者匹配.{0,7}
部分或[^0-9]*|[^A-Z]
- 这就是为什么它在任何情况下都返回true.
你可以使用这个正则表达式:
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
此正则表达式将强制执行以下规则:•至少一个大写英文字母•至少一个小写英文字母•至少一个数字•至少一个特殊字符•最小长度为8
从refered:正则表达式对密码必须含有至少8个字符,至少1号和较低和大写字母和特殊字符