php regex çok katı

4 Cevap

Bu çok katı neden sadece merak, ben tim@yahoo.com veya two@google.com söylemek çok basitleştirilmiş e-posta gönderebilirsiniz

Ben artık (sacagawea@gmail.com) e-posta yapmak ama eğer gönderildi almaz.

Bunun yerine benim hata mesajı geri echos: Geçersiz E-posta Adresi Tedarik

    // Create a function to check email 
function checkEmail($email)
{
// Add some regex 
  return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE;
}

4 Cevap

Bu bölüm

@[\w\d.-]{2,}

gobbling edilir

@gmail.com

bu kısmı için hiçbir şey bırakarak

[\w\d.-]{2,}

eşleşecek.

Daha iyi, zaten kanıtlanmış bir şey yeniden, örneğin görmek için http://www.regular-expressions.info/email.html

Eğer 5.2 veya üzeri php erişiminiz varsa, filter işlevleri kullanmanız gerekir:

function checkEmail($email){
  return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}

Ya da, "the right way" doğrulamak.

Ben genellikle e-posta geçerliliğini denetlemek için kendime çok fazla üzülmek yok. Ben sadece "@" önünde ve arkasında bir değer olduğunu kontrol etmeniz gerekir. Hepsi bu. "Kontrol" işinin kalanı, MTAs benim için yapacağız. Onun geçersiz e-posta ise, i MTA bir yanıt alırsınız. Gönderilecek olan güçlü, bu e-posta muhtemelen geçerli olduğu anlamına gelir.

lütfen deneyin

'/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/'

aynı zamanda email@sub.domain.tl olarak subdomain e-posta adresleri için uygun