2010-09-07 1 views
2

re = //? (\ W +)/(\ w +)/ s = '/ projets/nouvelles' s.match (re)javascript regexp ne peut pas trouver moyen d'accéder à des résultats regroupés

I avoir cette expression régulière que je vais utiliser pour tamiser le nom de la branche, par exemple, projets, et le nom 'tip', par exemple, nouveau

J'ai lu que l'on peut avoir accès aux résultats groupés avec 1 $, 2 $, et ainsi de suite, mais je n'arrive pas à le faire fonctionner, au moins dans la console Firebug

Lorsque je cours le code ci-dessus, puis exécutez

RegExp.$1 

il montre

"" 

même se poursuit pendant 2 $.

des idées?

Merci!

Répondre

2

Sans le g, str.match(regexp) renvoie la même valeur que regexp.exec(str). Et c'est:

Le tableau retourné a le texte correspondant en tant que premier élément, puis un élément pour chaque parenthèse de capture qui correspondait contenant le texte qui a été capturé. Si la correspondance échoue, la méthode exec renvoie null.

Vous pouvez faire ceci:

var match = s.match(re); 
match[1] 
+0

@Brian, et @ João. Merci les gars pour vos réponses. Ils regardent à peu près la même chose, alors je vote juste Gumbo '. –

2

match vous donne un tableau des expressions adaptées:

> s.match(re)[1] 
"projects" 
> s.match(re)[2] 
"new" 
1

Je vous accédez au tableau des correspondances dans le mauvais sens faire quelque chose comme :

re = /\/?(\w+)\/(\w+)/ 
s = '/projects/new' 
var j = s.match(re) 

alert(j[1]); 
alert(j[2]); 
Questions connexes