E-posta Regex Deseni
Yukarıdaki desen, gerçek dünyadaki e-posta adreslerinin büyük çoğunluğuyla eşleşir. Alfanumerik ve ._%+- karakterlerini kullanan boş olmayan bir yerel bölüm, ardından @, en az bir nokta içeren bir alan ve iki veya daha fazla harften oluşan bir TLD gerektirir. Eşleşen satırlar: user@example.com, alice.chen@company.co.uk, bob+tag@gmail.com. Eşleşmeyen satırlar: invalid@, @missing-local.com, no-at-sign.com, user@.com.
Desen Ayrıştırması
| Bölüm | Desen | Eşleştiği şey |
|---|---|---|
| Başlangıç bağlacı | ^ | Her satırın başı (m bayrağı ile) |
| Yerel bölüm | [a-zA-Z0-9._%+\-]+ | Harfler, rakamlar ve ._%+-, bir veya daha fazla |
| İşareti | @ | Değişmez @ |
| Alan etiketleri | [a-zA-Z0-9.\-]+ | Nokta ve tirelere izin veren alan adı |
| TLD öncesi nokta | \. | Değişmez nokta |
| TLD | [a-zA-Z]{2,} | İki veya daha fazla harf |
| Bitiş bağlacı | $ | Her satırın sonu (m bayrağı ile) |
E-posta Regex’inde Yaygın Hatalar
Yerel bölümde + işaretine izin vermemek en sık karşılaşılan sorundur. Gmail ve diğer birçok sağlayıcı, user+tag@gmail.com adresini user@gmail.com ile aynı gelen kutusuna yönlendirir.
Çok seviyeli TLD’lere izin vermemek ikinci en yaygın hatadır. \.[a-zA-Z]{2,3} ile biten bir desen, alice@company.co.uk adresini reddeder çünkü .co’yu TLD olarak görür.
Deseni ^ ve $ ile bağlamamak, bu bir e-posta değil ama içinde bir tane var@example.com gibi bir stringin gömülü parçayı eşleştirmesi anlamına gelir.
HTML5 E-posta Deseni
Tarayıcılar <input type="email"> öğesine kendi desenlerini uygular.
Regex’in Size Söyleyemeyeceği Şeyler
Bir regex, adresin e-postaya benzediğini onaylayabilir. Ancak alanın çalışan MX kayıtları olup olmadığını, posta kutusunun var olup olmadığını veya kullanıcının adresi kontrol edip etmediğini söyleyemez. Gerçek bir e-posta adresine bağlı her akış için standart yaklaşım:
- Temel format kontrolü uygulayın (regex veya
type="email") - Zaman sınırlı token ile bir onay e-postası gönderin
- Adresi yalnızca kullanıcı bağlantıya tıkladığında doğrulanmış olarak kabul edin