2016-12-29 6 views
0

У меня возникают проблемы с тем, как я подтвердить прозвища:Использование preg_match для проверки псевдонима без пробелов и букв вариаций

preg_match("^[A-Za-z0-9]+$^", $nickname); 

Она работает правильно, но есть одна проблема с этим, что я не могу исправить, заключается в том, что он позволяет использовать пробелы и буквенные варианты, такие как é, ç, -, и я не хочу их допускать. Как я могу это исправить?

ответ

3

Думаю, что вы должны использовать /^[A-Za-z0-9]+$/. ^ означает начало линии, а $ означает конец линии. Объединив строку в ^, вы делаете это ограничителем регулярного выражения, а не типичным /. В этом случае ^ теряет смысл начала линии.

Редактировать: Лучше всего /\A[A-Za-z0-9]+\z/. Это тонкая модификация. ^ может быть началом строки или начала строки, но \A всегда является началом строки. Аналогично, $ может быть концом строки или конца строки, но \z - это конец строки. Поэтому, используя ^ и $, прозвища могут содержать разрывы линий, но если вы используете \A и \z, они не могут.

+0

Тонкая модификация этого заключается в том, что '^' - начало строки, а '\ A' - начало строки. Аналогично '$' - это конец строки, а '\ z' - конец строки. Поэтому, используя '^' и '$', псевдонимы могут содержать разрывы строк, но если вы используете '\ A' и' \ z', они не могут. – jmarkmurphy

+1

См. [Regex test] (https://regex101.com/r/6q26BG/1). @jmarkmurphy - должно ли содержимое вашего комментария быть перенесено в тело ответа? –

+0

Обратите внимание, что вместо '\ A' и' \ z' вы также можете использовать '^' и '$' с модификатором D: '/^[A-Za-z0-9] + $/D' –