Test senaryoları ile e-posta doğrulama için regex deseni. RFC 5322 uyumluluğu, yaygın tuzaklar ve regex'in tek başına neden yeterli olmadığını kapsar.
alice.chen@company.co.ukindeks 17bob+tag@gmail.comindeks 42test@sub.domain.example.orgindeks 113Yukarı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.
| 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) |
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.
Tarayıcılar <input type="email"> öğesine kendi desenlerini uygular.
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:
type="email")Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.