Использование 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) )