Использование регулярных выражений для электронной почты может быть проблематичным. Электронные письма не так просты, как вы думаете - в них много допустимых символов. В идеале вы должны позволить браузеру сделать это input[type="email"]
и отправить своим пользователям электронное письмо для активации, чтобы доказать, что адрес электронной почты действителен, но я понимаю, что может возникнуть обоснованная необходимость в проверке адреса на сервере.
Здесь есть полезная информация: https://stackoverflow.com/a/201378/1921385
Все еще нужен rx?
Согласно https://emailregex.com/ регулярному выражению, используемому W3C для проверки input[type=email]
- это:
/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
Таким образом, вы можете использовать это и просто убрать номерную часть:
/^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
Играйте на regex101.com
Вот демоверсия:
input {border:10px solid red;}
input:valid {border-color:green;}
<input type="text" required="required" pattern="^[a-zA-Z.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" placeholder="type=text, using a pattern" />
<input type="email" required="required" placeholder="type=email, no pattern here" />