2010-02-23 19 views
1

J'essaye d'écrire une expression régulière qui vérifie si un champ de forme d'email contient une adresse électronique libre, sans chance.Comment écrire une expression régulière pour correspondre à des comptes de messagerie gratuits?

Essentiellement j'ai besoin de vérifier si l'e-mail contient: hotmail, yahoo, gmail etc dans le domaine de l'email.

+1

Qu'avez-vous déjà? Postez le code qui ne fonctionne pas. – ptomato

+0

Quelle couverture avez-vous besoin? Il existe des milliers de fournisseurs de messagerie gratuits sur Internet. Quel problème essayez-vous de résoudre avec cette détection? –

+0

J'ai une liste fixe de domaines fournis par le client, donc seulement une poignée de domaines doivent être vérifiés. – user279464

Répondre

-1

regex serait comme STH:

[a-zA-Z0-9_\.+][email protected](gmail|yahoo|hotmail)(\.[a-z]{2,3}){1,2} 

vous pouvez ajouter tous les autres domaines que vous voulez ... -t-elle vous aider?

+0

De toute évidence, l'astuce consiste à obtenir la liste de tous les autres domaines. –

+0

Cela a fonctionné la première fois, merci pour toutes les réponses – user279464

+0

Je ne peux pas voter comme je suis nouveau :-) – user279464

0

Avez-vous essayé une grande disjonction?

à savoir

yahoo\.com|googlemail\.com|blah\.net

Avantages: Facile à construire, facile à lire, explicite. Inconvénients: Peut-être pas le mécanisme le plus efficace.

+0

En fait, s'il utilisait Perl v5.10, il serait très efficace. C'est parce que ça devient un trésor. –

+0

Hmmm, pas rencontré un 'trie' avant - très intéressant, merci pour le commentaire !! – Brabster