2009-11-27 3 views
0

Je me demandais pourquoi il en est trop stricte, je peux envoyer des e-mails très simplifiées pour dire [email protected] ou [email protected]php regex trop stricte

mais si je fais le courriel plus longtemps (Sacagawea @ gmail .com) il n'est pas envoyé.

Au contraire, il en écho à mon message d'erreur: Adresse E-mail non valide Fourni

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

Veuillez ne pas utiliser 'cond? TRUE: FALSE' quand seulement 'cond' fera l'affaire. –

+0

Merci, désolé n'a pas vu attraper ça. – Newb

Répondre

2

Cette partie

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

engloutit

@gmail.com 

ne laissant rien pour cette partie

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

de match.

Mieux réutiliser quelque chose déjà fait ses preuves, voir par exemple http://www.regular-expressions.info/email.html

+0

Merci pour le lien, Je me demandais juste Ctrl + F sur votre clavier utilise un certain type de regex pour trouver des trucs, je pense, il a même la possibilité de faire correspondre un cas, mais ils ne l'appellent pas regex, juste Rechercher? – Newb

+0

Hein? Le comportement de Ctrl + F dépend entièrement de l'application qui reçoit ces clés quand je les frappe. –

+0

Je voulais simplement dire la façon dont il utilise certaines correspondances, même s'il s'agit d'un navigateur Web, d'un document Word, d'une invite de commande, d'une console shell ou d'un bloc-notes ++ ou simplement d'un grepping. – Newb

0

s'il vous plaît essayer

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

il convient aussi pour les adresses e-mail du sous-domaine [email protected]

1

Je ne me inquiétez pas trop souvent pour contrôler la validité e-mail. J'ai juste besoin de vérifier qu'il y a une valeur devant "@" et à l'arrière. C'est tout. Le reste du travail de «vérification», les MTA le feront pour moi. Si son email invalide, j'obtiendrai une réponse de MTA. S'il est possible de l'envoyer, cela signifie que le courriel est probablement valide.

3

Si vous avez accès à PHP 5.2 ou au-dessus, vous devez utiliser les fonctions filter:

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

Ou valider, "the right way".