2011-07-19 30 views
5

Tôi đang sử dụng biểu thức này để xác nhận địa chỉ e-mail:Phần địa phương của địa chỉ e-mail có yêu cầu độ dài tối thiểu không?

"^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"

tôi nhận thấy rằng để cho địa chỉ e-mail để xác nhận, tôi cần phải đặt trong ít nhất 3 ký tự trước ký hiệu @ . Đây có phải là yêu cầu không? Điều gì sẽ xảy ra nếu tôi chỉ muốn có một địa chỉ email có 1 hoặc 2 ký tự trước ký hiệu @?

+0

Tôi tìm thấy thông tin này tại đây. Tôi không chắc chắn làm thế nào để thay đổi nó để cho phép tối thiểu là 1 ký tự. – Xaisoft

+0

bạn đã tìm thấy điều này ở đâu trên SO? REGEX bạn cung cấp là sai, vì nhiều lý do. – Brad

+0

MS Outlook không ngăn bạn sử dụng 'a @ b.com'. –

Trả lời

8

Hoàn toàn có thể có địa chỉ email chỉ với một ký tự. Tất cả các hướng dẫn được định nghĩa trong RFC822: http://www.ietf.org/rfc/rfc0822.txt?number=822

regex cần thiết: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

+0

Làm cách nào để thay đổi biểu thức chính quy của tôi để phản ánh điều đó? – Xaisoft

+0

Xem chỉnh sửa mới nhất của tôi. Quá dài để đăng tất cả ở đây. – Brad

+0

Vâng, regex đó quá dài. Điều tôi có là tốt, tôi chỉ muốn cho phép tối thiểu 1 ký tự trước @. – Xaisoft

-2

tôi đã đi trước và quyết định sử dụng cái này:

"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"

Nó cho phép tôi để nhập 1 hoặc nhiều ký tự cho phần địa phương.

+0

Giải thích lý do tại sao điều này đã được bình chọn sẽ tốt đẹp. Đây là một trong những tôi tìm thấy ở đây, tôi tin rằng đó là từ thông thường-biểu thức-thông tin. – Xaisoft

+0

Regex của bạn giải quyết được vấn đề của bạn, nhưng nó rất kém chất lượng. – VMAtm

+0

Bạn có ý nghĩa gì bởi chất lượng trong trường hợp này? Nếu nó là bởi vì nó không phù hợp với địa chỉ nhất định, tôi sẽ không xác định đó là chất lượng. Tôi sẽ nói đó là một khía cạnh định lượng hơn cho nó. Cụm từ thông dụng mà tôi đang tìm kiếm không cần phải xác thực mọi địa chỉ có thể có trên thế giới. Nếu nó chỉ có biểu tượng @ sẽ ổn thôi. – Xaisoft

1

Regex của bạn không tốt. Bạn thực sự nên thay đổi nó. Thậm chí Microsoft cung cấp các biến thể linh hoạt hơn:

"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$" 

Có, rất dài. Nhưng bạn nên viết các chương trình tốt, không phải các chương trình phát triển nhanh.

+0

VMAtm, tôi nhận được quan điểm của bạn, nhưng bạn phải nhận ra rằng tôi chỉ tìm thấy biểu thức chính quy trực tuyến và cho nó một shot. Tôi không bao giờ cam kết với nó. – Xaisoft

+0

Chắc chắn nên viết các chương trình phát triển nhanh –

Các vấn đề liên quan