#hibernate-validator
Вопрос:
Версии:
hibernate-validator: 6.2.0.Final (from mvnrepository.com)
При необходимости вы можете ознакомиться с соответствующими документами по адресу jboss.org.
Я обнаружил, что встроенный валидатор Hibernate (через @Email
аннотацию) поддерживает проверку адресов электронной почты (то есть для строк, в которых должны содержаться действительные адреса электронной почты).
ВОПРОС: кто-нибудь знает регулярное выражение по умолчанию, которое использует для проверки валидатор Hibernate 6.2 @Email
?
Ответ №1:
Из исходного кода hibernate-валидатора:
- Проверяет, является ли заданная последовательность символов (например, строка) правильно сформированным адресом электронной почты.
- Спецификация действительного электронного письма можно найти в RFC 2822, и можно придумать регулярное выражение, соответствующее всем действительным адресам электронной почты в соответствии со спецификацией. Однако, как обсуждается в этой статье, не обязательно практично внедрять валидатор электронной почты, соответствующий 100% требованиям. Эта реализация является компромиссом, пытаясь соответствовать большинству электронных писем, игнорируя, например, электронные письма с двойными кавычками или комментариями.
private static final int MAX_LOCAL_PART_LENGTH = 64;
private static final String LOCAL_PART_ATOM = "[a-z0-9!#$%amp;'* /=?^_`{|}~u0080-uFFFF-]";
private static final String LOCAL_PART_INSIDE_QUOTES_ATOM = "(?:[a-z0-9!#$%amp;'*.(),<>\[\]:; @ /=?^_`{|}~u0080-uFFFF-]|\\\\|\\\")";
/**
* Regular expression for the local part of an email address (everything before '@')
*/
private static final Pattern LOCAL_PART_PATTERN = Pattern.compile(
"(?:" LOCAL_PART_ATOM " |"" LOCAL_PART_INSIDE_QUOTES_ATOM " ")"
"(?:\." "(?:" LOCAL_PART_ATOM " |"" LOCAL_PART_INSIDE_QUOTES_ATOM " ")" ")*", CASE_INSENSITIVE
);