SORU
14 EKİM 2008, Salı


Düzenli ifade bir e-posta adresi doğrulamak için kullanma

Yıllar içinde yavaş yavaş doğrular EN doğru e-posta sunucu parçası olarak bir IP adresi kullanmıyorlar varsayarak adresleri regular expression Bir geliştirdim.

Birkaç PHP programları kullanıyorum ve çoğu zaman işe yarıyor. Ancak, zaman zaman ben Rektörün biri sorun çıkarıyor bir site bunu kullanır, ve ben olmam için bazı ayarı (en son anladım ki ben değildim izin 4 karakter s " ras " yla).

Size en iyi düzenli ifade ya da e-posta doğrulama için neler gördü?

Birkaç kısa ifadeler kullanmak fonksiyonları kullanmak çeşitli çözümler gördüm, ama çok daha karmaşık bir fonksiyon basit bir fonksiyon yerine birkaç kısa ifadesi, uzun bir karmaşık ifade ederdim.

CEVAP
14 EKİM 2008, Salı


Bu sorun için basit bir düzenli ifade yoktur: Hiç de basit this fully RFC‑822–compliant regex,. (Gramer kalıplarının gün önce yazılmıştır.) Dilbilgisi RFC 5322 belirtilen çok ilkel düzenli ifadeler için karmaşık.

Perl,/, ve PHP daha karmaşık gramer kalıpları 4**. Python ve C# aynı zamanda onu yönetmek gerekir, ama bu üç farklı bir sözdizimi kullanır. Eğer çok daha güçlü bir desen eşleştirme diller birini kullanmak zorunda kalıyor ancak, eğer, o zaman en iyisi gerçek bir ayrıştırıcı kullanmak için.

Ayrıca önemli RFC başına doğrulamadan bu adres aslında sağlanan etki alanı var olup olmadığı hakkında hiçbir şey söylemiyor, ya da kişinin adresini girerek onun gerçek sahibi olup olmadığını anlamak için. İnsanlar başkaları da e-posta listeleri bu şekilde her zaman işareti. Bu tespit bir onay token adresi olarak aynı web sayfasında girilmesi gerekiyordu içeren bir ileti adresi göndermeyi içeren doğrulama meraklısı bir tür gerektirir.

Onay simgeleri kişinin adresini girerek mi var bilmek için tek yoldur. Bu çoğu e-posta listeleri şimdi bu mekanizma kayıt işlemleri onaylamak için kullanın. Ne de olsa kimsenin* *0, ve hatta hukuki olarak ayrıştırmak olacak bırakabilir, ama diğer ucundaki kişi olmak olası değil.

PHP içindeğiliçinden alıntı yapıyorum desen Validate an E-Mail Address with PHP, the Right Way verilen kullanın:

Yaygın kullanımı ve yaygın özensiz kodlama kaydedilen resmi standart daha fazla kısıtlayıcı bir e-posta adresleri için de facto bir standart olacağı bir tehlike var.

Bu non-RFC diğer desen daha iyi olur. Bile bile ** 6, bırak RFC 5322 işlemek için yeterince akıllı değil. This one ancak.

Süslü ve titiz, implement a complete state engine almak istiyorsanız. Düzenli ifade sadece ilkel bir filtre olarak hareket edebilir. Sorun ile düzenli ifadeler olduğunu söyleyen biri kendi mükemmel geçerli e-posta adresi geçersiz (yanlış pozitif) çünkü düzenli ifade yapamazsın sadece kaba ve kaba kullanıcı bakış açısı. Bu amaçla devlet bir motor e-posta adresi yoksa her RFC göre e-posta adresi demonte olarak geçersiz sayılacaktır doğrulamak ve hatta doğru olabilir. Bu potansiyel olarak daha hoş bir deneyim için izin verir

Belirtilen e-posta adresi 'myemail@Adres,com' geçersiz. Demek istedi'? myemail@address.com

Ayrıca bakınız 9**, yorumlar da dahil. Veya Comparing E-mail Address Validating Regular Expressions.

Regular expression visualization

Debuggex Demo

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009