编辑 :感谢您的建议,使我的问题更清楚:)Match
正在寻找 3 个连续的字符:Regex Match =
AA 653219
Regex Match = AA
555 6219
代码是 ASP.NET 4.0。这是整个功能:
public ValidationResult ApplyValidationRules()
{
ValidationResult result = new ValidationResult();
Regex regEx = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$");
bool valid = regEx.IsMatch(_Password);
if (!valid)
result.Errors.Add("Passwords must be 8-20 characters in length, contain at least one alpha character and one numeric character");
return result;
}
我已经尝试了 3 个多小时来完成这项工作,引用以下内容没有运气=/
How can I find repeated characters with a regex in Java?
.net Regex for more than 2 consecutive letters
我已经开始使用 8-20 个字符
a-Z
0-9
:^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$
As Regex regEx = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z]).{8,20}$");
我尝试添加以下变体,但没有成功:
/(.)\1{9,}/
.*([0-9A-Za-z])\\1+.*
((\\w)\\2+)+".
任何帮助将非常感激!
最佳答案
http://regexr.com?34vo9
正则表达式:
^(?=.{8,20}$)(([a-z0-9])\2?(?!\2))+$
第一个前瞻 (
(?=.{8,20}$)
) 检查字符串的长度。第二部分通过以下方式检查您的双重字符和有效性:(
([a-z0-9]) Matching a character and storing it in a back reference.
\2? Optionally match one more EXACT COPY of that character.
(?!\2) Make sure the upcoming character is NOT the same character.
)+ Do this ad nauseum.
$ End of string.
好的。我看到你添加了一些额外的要求。我的基本论坛仍然有效,但我们必须为您提供更多一步一步的方法。所以:
^...$
出于显而易见的原因,您的整个正则表达式将被放入开始和结束字符中。
(?=.{n,m}$)
长度检查。将其放在正则表达式的开头,其中 n 作为最小长度,m 作为最大长度。
(?=(?:[^REQ]*[REQ]){n,m})
必需的字符。把它放在你的正则表达式的开头,用 REQ 作为你需要的字符来要求你的字符的 N 到 M。你可以放弃
(?: ..){n,m}
只需要其中一个字符。(?:([VALID])\1?(?!\1))+
你剩下的表情。将 VALID 替换为您的有效字符。因此,您的密码正则表达式是:
^(?=.{8,20}$)(?=[^A-Za-z]*[A-Za-z])(?=[^0-9]*[0-9])(?:([\w\d*?!:;])\1?(?!\1))+$
'解释:
^
(?=.{8,20}$) 8 to 20 characters
(?=[^A-Za-z]*[A-Za-z]) At least one Alpha
(?=[^0-9]*[0-9]) At least one Numeric
(?:([\w\d*?!:;])\1?(?!\1))+ Valid Characters, not repeated thrice.
$
http://regexr.com?34vol这是新的行动。
关于RegEx 不超过 2 个相同的连续字符以及 a-Z 和 0-9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717656/