Используйте регулярное выражение, чтобы узнать, является ли строка одним повторяющимся символом

Я пишу сценарий PHP, и на данный момент мне нужно знать, состоит ли строка из одного символа, который только что повторился. Персонаж даже конкретный: это z,

Например, я хочу соответствовать "z", "zzz" или же "zzzzzzzzz" но нет "zaz" или же "aaa",

Вероятно, это простой вопрос регулярных выражений, но я понятия не имею, как это сделать. Кто-нибудь?

6 ответов

Решение

Сопоставьте это с ^z*$: начало (^), любое количество z ​​(z*), конец ($)

^zz+$

..... ля ля 15 персонажей

Если регулярное выражение вас пугает - вы можете использовать функцию, подобную предложенной Харменом, или что-то вроде:

$string = 'zzzzzzzzz';
$check = str_repeat('z', strlen($string));
var_dump($check == $string); // dumps bool(true)

$string = 'zzzzAAAzzz';
$check = str_repeat('z', strlen($string));
var_dump($check == $string); // dumps bool(false)

Нет необходимости в регулярных выражениях. Используйте всю мощь PHP-массивов:

count(array_unique(str_split($string)))==1

Когда я проверяю, является ли строка повторяющимся символом, я делаю это:

if (strlen(count_chars($string, 3)) = 1) return true;

Вы можете создать пользовательскую функцию, например так:

function oneLetter($str){

  for($i=1; $i < strlen($str); $i++){
    if($str[i] != $str[i-1]) return false;
  }

  return true;

}
Другие вопросы по тегам