Регулярное выражение для проверки ввода данных поля input атрибутом pattern
Необходимо реализовать проверку вводимых данных password HTML input с помощью регулярного выражения в атрибуте pаttern
Требования к вводимым данным:
- пароль должен состоять минимум из 6 символов
- пароль должен содержать минимум 2 английские буквы
- пароль должен содержать минимум 4 цифры
На данный момент у меня условие от 6 до 15 символов:
pattern="^[a-zA-Z0-9_]{6,15}"
Подскажите, как переделать регулярку под нужные требования!
Ответы (1 шт):
(?=(?:.*[A-Za-z]){2})(?=(?:.*[0-9]){4})^.{6,}$"
(?=...) - позитивный просмотр вперед
(?:.*[A-Za-z]){2} группа без захвата, в которой проверяем любое количество символов за которыми следует любая буква в латинского алфавита, квантификатор указывает что таких совпадений должно быть 2.
(?:.*[0-9]){4} - группа без захвата, по аналогии с алфавитной
.{6,} - 6 и более любых символов, в т.ч. пробельных
С html не знаком, но вроде количество символов можно так же ограничить самим полем, а не регулярным выражением.
Type специально поставил text, что бы видеть вводимые данные
Пример работы:
<!DOCTYPE html>
<html>
<body>
<form action="/action_page.php">
<label for="pwd">Password:</label>
<input type="text" id="pwd" name="pwd" pattern="(?=(?:.*[A-Za-z]){2})(?=(?:.*[0-9]){4})^.{6,}$" title="Пароль должен содержать минимум 2 буквы и 4 цифры">
<input type="submit">
</form>
</body>
</html>