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! P>
E.g. Pour une entrée de "test@example.com", j'ai besoin d'une sortie "exemple.com". P>
Cheer! Tim p>
9 Réponses :
@ (. *) $ p>
Ceci correspondra avec le @, puis tout capturer jusqu'à la fin de l'entrée ($) p>
Merci! Je reçois "@ example.com". Puis-je obtenir la valeur sans @?
Vous n'obtenez probablement pas le bon groupe. La parenthèse ( code>, ) code> 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 :)
Une simple regex pour votre entrée est la suivante: 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)$
En fait, le regex est un peu plus long a >
Je recommande celui-ci sur ma solution car il est moins restrictif.
N'oubliez pas de capturer le domaine dans un groupe, comme demandé: ^ [A-Z0-9 ._% + -] + @ ([A-Z0-9 .-] + \. [AZ] {2,4}) $ code>
Et, euh, n'oubliez pas d'échapper à ceux-ci ». Est, même dans des classes de personnages.
Une expression régulière est une machinerie assez lourde à cette fin. Il suffit de diviser la chaîne contenant l'adresse e-mail dans le caractère @ code> et prenez la seconde moitié. (Une adresse électronique est garantie de ne contenir qu'un seul @ code> caractère.) P>
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])
$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()
Ce lien a absolument rien i> à faire avec la question postée ici. N'ayez pas simplement un lien vers votre site Web comme celui-ci B> 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 :-)
Essayez cette expression régulière:
(? <= ([\ w - \ \.] @)) ((?: [\ w] + \.) +) ([A-ZA-Z] {2,4})
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: ( p>
Par exemple, il s'agit d'une adresse e-mail valide: p> Vous devez être assez méchant pour que votre adresse e-mail soit plutôt méchante. P> Alors, d'abord, analysez tous les commentaires à la fin. P> puis p>
$1newdomain$3
Un autre exemple plus court est https://regex101.com/r/gmoh52/2 < / em> p> @ ([\ w .-] +) \. code> em> str> p> p> p> p> P> P> P>