11
votes

Expression régulière pour le domaine de l'adresse e-mail

Quelqu'un peut-il m'aider avec une expression régulière qui retournera la partie finale d'une adresse électronique, après le symbole @? Je suis nouveau dans Regex, mais je veux apprendre à l'utiliser plutôt que d'écrire des fonctions de chaîne inefficaces!

E.g. Pour une entrée de "test@example.com", j'ai besoin d'une sortie "exemple.com".

Cheer! Tim


0 commentaires

9 Réponses :


14
votes

@ (. *) $

Ceci correspondra avec le @, puis tout capturer jusqu'à la fin de l'entrée ($)


3 commentaires

Merci! Je reçois "@ example.com". Puis-je obtenir la valeur sans @?


Vous n'obtenez probablement pas le bon groupe. La parenthèse (, ) indiquez une correspondance de groupe, assurez-vous donc de saisir le résultat du groupe avec Index 1, pas 0 (car l'index n ° 0 est toujours réservé à l'ensemble de l'index. correspondance d'expression).


C'est la bonne réponse car l'OP a spécifiquement demandé une regex ... qui est d'ailleurs ce que je cherchais quand je suis arrivé ici :)



2
votes

Une simple regex pour votre entrée est la suivante: xxx pré>

mais, il peut être inutile lorsque vous postulez à des domaines vastes et hétérogènes. P>

Un exemple est:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)$




4
votes

Ceci est un correspondeur de messagerie à usage général:

([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])


0 commentaires

1
votes
$input=hardiksondagar@gmail.com;
// now you want to fetch gmail from input user PHP's inbuilt function 
preg_match('/@(.*)/', $input, $output);
echo $output[1]; // it'll print "gmail.com"

Documentation of function : preg_match()

2 commentaires

Ce lien a absolument rien à faire avec la question postée ici. N'ayez pas simplement un lien vers votre site Web comme celui-ci ou vous trouverez que vos messages sont supprimés en tant que spam. Je supprime le lien pour vous.


Je sais que cela n'a rien à voir avec la question mais le lien contient un exemple très difficile, alors pensez que ça va être utile aux autres ... ok je prendrai soin de la prochaine fois. Merci :-)



1
votes

Essayez cette expression régulière: xxx


1 commentaires

(? <= ([\ w - \ \.] @)) ((?: [\ w] + \.) +) ([A-ZA-Z] {2,4})



3
votes

wow, toutes les réponses ici ne sont pas tout à fait correctes.

Une adresse e-mail peut avoir autant de "@" que vous le souhaitez, et le dernier n'est pas nécessairement celui avant le domaine: (

Par exemple, il s'agit d'une adresse e-mail valide: xxx

Vous devez être assez méchant pour que votre adresse e-mail soit plutôt méchante.

Alors, d'abord, analysez tous les commentaires à la fin.

puis xxx


0 commentaires

0
votes
$1newdomain$3

0 commentaires

0
votes

Un autre exemple plus court est @ ([\ w .-] +) \.

https://regex101.com/r/gmoh52/2 < / em>


0 commentaires