RegEx 不超过 2 个相同的连续字符以及 a-Z 和 0-9

标签 regex

编辑 :感谢您的建议,使我的问题更清楚:)
Match正在寻找 3 个连续的字符:
Regex Match = AA 653219Regex 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/

相关文章:

java - 我正在寻找全部大写且有空格的单词

ruby-on-rails - 用于多个单词的 ruby​​ 正则表达式有条件地匹配

JavaScript 回顾正则表达式

php - preg_match_all 在使用克拉 (^) 时不匹配

python - 为什么 PLY 对待正则表达式与 Python/re 不同?

Python正则表达式匹配文本后的数字

c - C 中的正则表达式

javascript - 如何使用 javascript 删除字符串中指定单词之后和句点之前的所有字符?

javascript - 为什么这两个正则表达式的行为不一样?

java - 不包含 00 的二进制序列的正则表达式