"Françoise Lefèvre"@example.com
Я читаю RFC 5321, чтобы попытаться понять, что представляет собой действительный адрес электронной почты - и я, вероятно, сделаю это намного сложнее, чем нужно, но это меня раздражало.
i.e., within a quoted string, any ASCII graphic or space is permitted without blackslash-quoting except double-quote and the backslash itself.
Означает ли это, что расширенные наборы символов ASCII действительны в кавычках? Или это подразумевает стандартную таблицу ASCII только?
РЕДАКТИРОВАТЬ. С учетом этих ответов здесь приведен простой jQuery валидатор, который может работать в дополнение к плагин встроенной проверки электронной почты для проверки символов.
jQuery.validator.addMethod("ascii_email", function( value, element ) {
// In compliance with RFC 5321, this allows all standard printing ASCII characters in quoted text.
// Unquoted text must be ASCII-US alphanumeric or one of the following: ! # $ % & ' * + - / = ? ^ _ ` { | } ~
// @ and . get a free pass, as this is meant to be used together with the email validator
var result = this.optional(element) ||
(
/^[\u002a\u002b\u003d\u003f\u0040\u0020-\u0027\u002d-u002f\u0030-\u0039\u0041-\u005a\u005e-\u007e]+$/.test(value.replace(/(["])(?:\\\1|.)*?\1/, "")) &&
/^[\u0020-\u007e]+$/.test(value.match(/(["])(?:\\\1|.)*?\1/, ""))
);
return result;
}, "Invalid characters");
Встроенная проверка плагина, похоже, очень хороша, за исключением обнаружения недопустимых символов. Из приведенных ниже тестовых случаев здесь он запрещает комментарии, складывающиеся пробелы и адреса, не имеющие TDL (то есть: @localhost, @255.255.255.255) - все, с чем я легко могу жить.