"Françoise Lefèvre"@example.com
Tôi đang đọc RFC 5321 để cố gắng hiểu những gì tạo thành một địa chỉ email hợp lệ - và tôi có thể làm việc này khó khăn hơn rất nhiều - nhưng điều này đã làm tôi khó chịu.Đây có phải là địa chỉ email hợp lệ không?
i.e., within a quoted string, any ASCII graphic or space is permitted without blackslash-quoting except double-quote and the backslash itself.
Điều này có nghĩa rằng ASCII extended character sets có giá trị trong dấu ngoặc kép? Hay điều đó ngụ ý chỉ standard ASCII table?
EDIT - Với các câu trả lời, đây là jQuery validator đơn giản có thể hoạt động bổ sung cho xác thực email tích hợp của plugin để kiểm tra ký tự.
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");
Xác thực được tích hợp sẵn của plugin có vẻ khá tốt, ngoại trừ việc bắt các ký tự không hợp lệ. Trong số các trường hợp thử nghiệm được liệt kê here, nó chỉ không cho phép nhận xét, xếp khoảng trống và địa chỉ thiếu một TDL (ví dụ: @localhost, @ 255.255.255.255) - tất cả đều có thể dễ dàng sống mà không có.
Nói chung, câu trả lời hay nhất cho loại câu hỏi này là địa chỉ hợp lệ nếu bạn có thể nhận được một vài MTA khác nhau để chấp nhận nó. Các tiêu chuẩn IETF không phải lúc nào cũng chỉ rõ mọi thứ rõ ràng như bạn muốn. – msw
Không xác thực các ký tự riêng lẻ. [Thay vì xác thực cú pháp] (http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/1931322#1931322). – BalusC
@BafusC I * do * xác thực cú pháp. Tôi cũng muốn ngăn mọi người khỏi nhồi nhét tiếng Phạn vào một trường chỉ có ASCII. Cả hai không loại trừ lẫn nhau. Tuy nhiên, tôi nhận ra rằng việc xác thực email thực sự với RegEx, là một redditer đặt nó, là "giống như xây dựng một ngôi nhà bằng cách sử dụng gì ngoài một máy khoan điện." Xác thực phía máy khách chỉ ở đó để nói với ai đó "này, cái này không thuộc về" - và tôi tin rằng đây là một cách tốt, đơn giản để làm điều đó. – Greg