Использование PHP regex для проверки имени пользователя

Я пытаюсь проверить имя пользователя на PHP с помощью регулярного выражения, и все, что я подаю, не проверяется. Я все еще супер.

if ( !preg_match('/^[A-Za-z]{1}[A-Za-z0-9]{5-31}$/', $joinUser) )

Правила:

  • Необходимо начинать с буквы
  • 6-32 символа
  • только буквы и цифры

Я работаю с этим онлайн-тестером и этим тоже. Я прочитал эту нить и эту тему, но не смог понять много, поскольку они кажутся немного более сложными, чем мои (lookaheads? И различные специальные символы).

Прочитав первый поток, с которым я связался, кажется, что я один из людей, которые не совсем понимают, как слова "письма" влияют на то, что считается приемлемым, то есть иностранные персонажи, акцентированные персонажи и т.д. Я действительно просто глядя на английский алфавит (это ASCII?) и цифры 0-9.

Благодарю.

Ответ 1

Единственная проблема: вы ошибочно набрали последний квантификатор.

{5-31} должно быть {5,31}

поэтому ваше регулярное выражение будет

if ( !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $joinUser) )

и вы можете пропустить {1}, но это не повредит.

Ответ 2

Очевидно, все, что вам нужно было изменить, было 5,31 от 5-31.

Рабочий пример:

if (preg_match('/^[A-Za-z]{1}[A-Za-z0-9]{5,31}$/', "moo123"))
{
    echo 'succeeded';
}
else
{
    echo 'failed';
}

Ответ 3

Попробуй это:

if ( !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $joinUser) )