"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) のみが許可されていません。