Регулярное выражение для валидации имени пользователя
Подскажите, пожалуйста, как должно выглядеть регулярное выражение для проверки имени пользователя, которое не должно начинаться с цифры и должно состоять только из букв, цифр и символа "-".
Вот что я пытался сделать:
/[^0-9][a-zA-Z0-9\-]*$/
Заранее спасибо!
Ответы (2 шт):
У вас все нормально. За исключением [^0-9]. Лучше заменить на [a-z] и поставить маркер начала строки ^, получится так:
'/^[a-z][a-z0-9-]*$/i'
Знак ^ означает начало строки.
Знак $ означает конец строки.
Имея в одной регулярке и ^ и $ строка пройдёт тест если будет соответствовать регулярке полностью от начала до конца.
Знак i в конце - это флаг регистровой независимости. То есть a будет означать как a так и A.
Попробуйте вот это выражение: ^[a-zA-Z][a-zA-Z0-9-]+$. Объяснение:
- Тут
^обозначает начало строки $- конец строки- Далее в
[]идет перечисление тех символов, что должны быть в начале, так как стоят после^ a-zA-Z- это всего символы английского алфавита во всех регистрах- После этого идут остальные символы в
[a-zA-Z0-9-]. - В конце ставится
+так как необходимо иметь от одного символа, чтобы ник был как минимум 2 символа. Если это не надо, то замените+на*
Если все правильно понял в вашем вопросе, то решение должно сработать. Советую пользоваться веб-сервисом regex101.com, где есть подсказки и автоматическая валидация результата