我必须检查用户输入以确保正确输入名称,姓氏(等等)并且有效。我必须构建一个regexp来检查用户是否输入了名字,姓氏等重复的字母......
示例:
是否有PHP正则表达式来捕获这些情况? (我有一个基本的正则表达式知识,但这对我来说太过分了)
修改 这也应该允许数字:David 3或III
由于
答案 0 :(得分:14)
您可以使用反向引用来实现此目的。
preg_match('/(\w)(\1+)/', $subject, $matches);
print_r($matches);
\1
表示重复第一次捕获,因此\w
。
就你的例子而言,我认为使用正则表达式不是最佳解决方案,为什么不计算任何字符的实例数?
即
$charCountArray = array();
foreach ($name as $char) {
$charCountArray[$char]++;
}
反向引用是一项高级功能,幸运的是PCRE功能支持它。
注意:preg_match
只匹配一个序列,如果您需要知道所有匹配项,请使用preg_match_all
答案 1 :(得分:5)
试试这个正则表达式:
/(\w)\1{2}/