在PHP中捕获重复字母 - 正则表达式

Tec*_*lco 5 php regex character repeat

我必须检查用户输入以确保正确输入名称,姓氏(等等)并且有效.我必须构建一个regexp来检查用户是否输入了名字,姓氏等重复的字母......

例:

  • AAAron =因为3 A而不好
  • AAron =好
  • 汉娜=好
  • Hannnah因为3 N而不好

是否有一个PHP正则表达式来捕获这些情况?(我有一个基本的正则表达式知识,但这对我来说太过分了)

编辑: 这应该允许数字:大卫3或III

谢谢

Rag*_*geZ 14

您可以使用反向引用来实现此目的.

preg_match('/(\w)(\1+)/', $subject, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)

\1意味着在这种情况下重复第一次捕获\w.

在您的示例中,我不认为使用正则表达式将是最佳解决方案,为什么不计算任何字符的实例数?

$charCountArray = array();
foreach ($name as $char) {
    $charCountArray[$char]++;
}
Run Code Online (Sandbox Code Playgroud)

后退参考是一项高级功能,幸运的是PCRE功能支持它.

注意:preg_match只匹配一个序列,如果您需要知道所有匹配,请使用preg_match_all


Azi*_*ikh 5

试试这个正则表达式:

/(\w)\1{2}/
Run Code Online (Sandbox Code Playgroud)