2009-05-20 14 views
0

Je suis en train d'utiliser un formulaire HTML et javascript (je mentionne cela, parce que certaines fonctionnalités avancées de traitement des expressions régulières ne sont pas disponibles lorsque vous l'utilisez javascript) pour acomplish les éléments suivants:Regex pour capturer les variables

alimentation forme un texte, et utiliser une expression régulière pour examiner et « capturer » certaines parties de celui-ci à utiliser comme variables ...

-à-dire le texte est le suivant:

« email ABCDE: [email protected] email : [email protected] sdfsdaf ... "

... maintenant, mon problème est que je ne peux pas penser à une façon élégante de capturer les deux courriels comme les variables e1 et e2, par exemple.

l'expression rationnelle que j'ai pour l'instant est quelque chose comme ceci:/email: (\ b \ w + \ b)/g mais pour une raison quelconque, ceci ne rend pas les 2 correspondances ... seulement redonne asdf @ gfds.com> <

sugestions?

Répondre

3

Vous pouvez utiliser RegExp.exec() pour appliquer de façon répétée une expression régulière à une chaîne, retournant un nouveau match à chaque fois:

var entry = "[...]"; //Whatever your data entry is 
var regex = /email: (\b\w+\b)/g 
var emails = [] 
while ((match = regex.exec(entry))) { 
    emails[emails.length] = match[1]; 
} 

J'enregistré tous les e-mails dans un tableau (pour faire ce travail bien arbitraire contribution). Il semblerait que votre regex soit un peu éteinte aussi; vous devrez le changer si vous voulez juste capturer l'email complet.

+0

Merci. Ouais, mon regex est peut-être un peu décalé, puisque je voulais capturer les adresses en utilisant la paréthèse ... mais votre réponse aide vraiment – EroSan

+1

+1 à mentionner cela .... Les objets RegExp ont un état ?! EWWWWWWW !!!!! –

Questions connexes