Регулярное выражение в проверке данных поля input атрибутом pattern
Необходимо реализовать проверку ввода данных ФИО на уровне 3х полей HTML input с помощью регулярного выражения атрибутом pаttern.
Требования к формату:
- Регистронезависимость (первая буква устанавливается заглавной автоматически JavaScript'ом).
- Допустима либо только латинница либо только кириллица.
В случае кириллицы:
- Недопустимы символы ь и ъ в начале.
- Недопустим символ ъ в конце.
- Недопустимы сочетания символов ьъ, ьь, ъъ и ъь.
Пробовал различные вариации регуляного выражения, в частности,
pattern="^[a-z]|^[^ьъ]?[а-я]+$/i",
но оно не обеспечивает всех требований и в случае правильного ввода типа "Иванов" браузер считает как неформат, хотя тестирование рег. выражения на соответствующем сайте прошло успешно.
Подскажите, как составить корректное регуляное выражение, если не затруднит то с объяснением!
Ответы (1 шт):
Как пример:
<form action="somefile.php">
<input type="text" name="Фамилия" placeholder="Фамилия" pattern="^((?!(.*[ъьЪЬ]{2}|[ъЪьЬ]))[А-Яа-яЁё]{2,}(-[А-Яа-яЁё]{2,})?(?<=[^ъЪ])|[A-Za-z]+)$">
</form>
^((?!(.*[ъьЪЬ]{2}|[ъЪьЬ]))[А-Яа-яЁё]{2,}(-[А-Яа-яЁё]{2,})?(?<=[^ъЪ])|[A-Za-z]+)$
Шаблон - исключаем в любом месте 2 символа мягкого и/или твердого знака
Мягкий или твердый знак вначале
Далее любое количество символов кириллицы
После необязательная группа с дефисом
Проверяем что последний символ не равен твердому знаку.
Либо один и более латинских символов в любом регистре