检查字符串中是否出现超过2次的正则表达式是什么?例如:允许“aab”,但不允许“aaa”或“aaba”。
有没有办法让它只匹配有效输入(当少于3个重复字符时),以便preg_match()函数返回1表示有效输入(少于3个重复字符),否则0?< / p>
谢谢!
答案 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