2013-02-14 2 views
0
"Max Mustermann" <[email protected]> 
[email protected] 
Max <[email protected]> 

J'ai besoin d'une expression régulière qui correspond à tout ce qui est en dehors des crochets de la flèche (y compris les parenthèses). La correspondance doit être supprimée par la suite.Expression régulière pour une adresse e-mail

Après le remplacement, il devrait ressembler à ceci:

"Max Mustermann" <[email protected]> => [email protected] 
+0

Bien que pas la même question, notez que l'analyse complète de toutes les formes d'adresses e-mail est difficile, http://stackoverflow.com/questions/46155/validate-email-address-in-javascript. – hlovdal

Répondre

0

La solution serait de rechercher

[^<]*<([^>]*)>.* 

plus facile et le remplacer par \1 ou $1, selon votre moteur de regex.

Cela supprime tout jusqu'à la première < et tout à partir de la prochaine > jusqu'à la fin de la chaîne.

Espérons juste qu'il n'y aura pas de parenthèses à l'intérieur des noms entre guillemets.

+0

Parfait, ça marche. –

+0

ce n'est pas vraiment. Par exemple, 'email @ domain.com' nu ne correspond pas. – mvp

+0

@ mvp: Bien sûr que non, volontairement. Pourquoi devrait-il correspondre? –

0

Cela devrait fonctionner, mais méfiez-vous qu'il est très simplified:

(?:[^<]*<)?([^>]+).* 

Réponse de l'email sera $1.

Par exemple, utiliser Perl:

$email =~ s/(?:[^<]*<)?([^>]+).*/$1/; 

Voir RegexPlanet online demo.

+0

Salut, l'expression ne fonctionne pas le résultat est la chaîne suivante [email protected]> –

+0

fixe, ajouté un lien vers fiddle.re avec beaucoup d'entrées de test. – mvp

Questions connexes