Через только регулярное выражение ..
$str="Big black books being kept in a black bag of a beautiful babe";
$pattern="/^([^b]*b){1,6}[^b]*$/";
if(!preg_match($pattern,$str,$matches))
{
echo "Please use upto six bs";
}else
{/*do nothing*/}
print_r($matches);
и обратите внимание, что это должно, за исключением по крайней мере один единственный б. Если вы хотите, чтобы соответствовать также линии, которые не имеют какие-либо одного b
затем использовать /^([^b]*b){0,6}[^b]*$/
Добавить регистронезависимый модификатор i
, если вы хотите, чтобы рассчитывать также на капитал B
лет.
Объяснение:
^
начало строки.
([^b]*b){1,6}
Он соответствует (ноль или более символов не-b и b
) (от 1 до 6 раз). Таким образом, это гарантирует, что должен быть символ b
существует мин. 1 раз и максимум 6 раз.
[^b]*
Соответствует любому знаку, но не b
, ноль или более раз. Это гарантирует, что больше не существует b
.
$
Конец границы линии ..
вы хотите 6 Б во всей строке или 6 Б в ряд ли? – Wash
@Wash Я хочу 6 b во всей строке. Не в строке, как bbbbbb. – user5237857