[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Валидация hostname
alexbel2404
Нашел регулярку для валидации hostname, составленную по спецификации RFC 1123:
^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$

Пытаюсь сделать ограничение {4,40} так:
^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])){4,40}$

Она срабатывает на "aaaa", но не срабатывает на "ya.ru", но срабатывает на "yay.ru" или "ya.rur". Также, почему-то не срабатывает ограничение в 40 символов.

Почему так происходит?
Aeq
чего вы хотели добиться добавив {4,40} ?
alexbel2404
Ну обычно я это добавляю, когда мне нужно указать длину строки)) Я взял все выражение в скобки и добавил {4,40}
Aeq
в регулярках это задает число повторений того что перед этим в скобках, а не ограничение по кол-ву символов.
если надо проверку на кол-во символов, вам проще проверить функцией strlen.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.