正则表达式检查字符串中是否出现超过X次的字符

时间:2016-11-05 15:19:30

标签: php regex preg-match

检查字符串中是否出现超过2次的正则表达式是什么?例如:允许“aab”,但不允许“aaa”或“aaba”。

有没有办法让它只匹配有效输入(当少于3个重复字符时),以便preg_match()函数返回1表示有效输入(少于3个重复字符),否则0?< / p>

谢谢!

2 个答案:

答案 0 :(得分:1)

这个正则表达式会找到一个重复3次的字符(或更多,因为必须点击三个以获得更多)。

(.)\1{2}

正则表达式演示:https://regex101.com/r/WmUPWW/1

PHP用法:

foreach(array('aaa', 'aab') as $string) {
    if(preg_match('/(.)\1{2}/', $string)) {
         echo $string . ' doesnt match :(' . "\n";
    } else {
         echo $string . ' matches'. "\n";
    }
}

PHP演示:https://eval.in/672382

答案 1 :(得分:0)

使用正则表达式匹配而不是条件

下面的x为max_length+1

(?:[^<letter>]*<letter>[^letter]*){x}

例如,对于字母 b,您将使用

(?:[^b]*b[^b]*){x}

对于所有元音

 (?:[^aeiou]*[aeiou][^aeiou]*){x}

有关 php 正则表达式的使用,请参阅 https://www.w3schools.com/php/php_regex.asp