2013-02-17 6 views
1

Je voudrais extraire le texte entre crochets(). La chaîne ressemble à ceci: Il est dans leComment extraire du texte entre parenthèses?

Some text: 5 (some numbers) + some more numbers 
asdfkjhsd: 7 (6578) + 57842 
djksbcuejk: 4 (421) + 354 

Mon javascript ressemble à ceci:

var fspno = document.getElementsByTagName("td")[142].innerText; 
var allfsp = fspno.match(); 

Je veux que ce script pour recueillir tous les numéros entre parenthèses dans un tableau. J'ai utilisé

fspno.match(/\((.*?)\)/g); 

mais il est revenu avec les parenthèses. Je ne veux que le texte à l'intérieur des parenthèses. Toute aide serait appréciée. Merci.

Répondre

1

Il n'y a aucun moyen javascript pour extraire tous les matches avec tous les groupes à la fois, donc vous devez soit utiliser exec dans une boucle:

re = /\((.+?)\)/g 
found = [] 
while(r = re.exec(fspno)) 
    found.push(r[1]) 

ou d'abus String.replace à recueillir les allumettes:

re = /\((.+?)\)/g 
found = [] 
fspno.replace(re, function($0, $1) { found.push($1)}) 

cependant, il est possible dans votre cas particulier, de réécrire l'expression de sorte qu'il ne contient pas de groupes et peut être utilisé avec String.match:

re = /[^()]+(?=\))/g 
found = fspno.match(re) 
+0

Merci. Cela a fonctionné parfaitement. –

0
/\((.*?)\)/.exec('7 (6578) + 57842')[1] 
0

Le plus simple est de désactiver l'option g et obtenir l'indice [1] sur le match, par exemple:

fspno.match(/\((.*?)\)/)[1]; 

Mais cela renvoie une erreur si rien ne se trouve, donc si vous ne sais pas si vous aurez une partie parenthésée ou non, vous pouvez utiliser cet idiome:

(fspno.match(/\((.*?)\)/) || [,""])[1]; 

qui retournera "" si elle ne peut pas trouver un match.

Si vous savez que vous devez l'option g (à savoir qu'il pourrait y avoir plus d'une chose entre parenthèses et que vous les voulez tous), vous pouvez utiliser:

var match, matches=[]; while (match = /\((.*?)\)/g.exec(s)) matches.push(match[1]); 
// matches is now an array of all your matches (without parentheses) 
0

Vous ne pourriez pas besoin l'option g. fiddle here

ou

var fspno = "7 (6578) + 57842"; 
var found = fspno.match(/\((.*?)\)/); 

if (found) { 
    var found1 = found[1]; 
    alert(found1); 
} 
Questions connexes