系统安全性越来越受到重视,此时往往对密码强度要一定要求,例如必须包括大写字母、必须由字母和数字组合而成、必须由字母、数字以及符号组合而成呀。
1. 由字母和数字组合而成:
Regex.IsMatch(strNewPassword, @"^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)).{2,}")
此正则表达式规则下,密码至少要有一个数字和一个字母,可以包括除去换行符以外的其他字符,甚至可以包括中文。
Regex.IsMatch(strNewPassword, @"^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*))[0-9A-Za-z\W_]{2,}")
按照ECMA标准,\W能匹配中文。
原本使用上面这个形式来进行验证,发现无法匹配中文,说明默认C#默认正则表达式匹配规则不是跟ECMA规则一致。使用RegexOptions.ECMAScript正则表达式选项时可以正常识别中文。
2. 由数字、字母、符号组成:
Regex.IsMatch(strNewPassword, @"^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)(?=.*[^0-9A-Za-z].*)).{3,}")