2010-10-20 7 views
4

Entrée:Javascript: Comment extraire plusieurs numéros d'une chaîne

« NEW YORK (Reuters) contrats à terme sur indices boursiers américains ont souligné un léger rebond de Wall Street mercredi, à terme pour le S & P 500 en hausse de 0,34%, les futures sur le Dow Jones en hausse de 0,12% et les futures sur le Nasdaq 100 en hausse de 0,51% à 0921 GMT. "

La sortie doit être un tableau de tous les nombres, y compris les nombres flottants. Un peu similaire thread mais il extrait seulement un nombre.

+1

expressions régulières est le façon d'aller – Onkelborg

Répondre

7

cela devrait le faire:

var text = "NEW YORK (Reuters) U.S. stock index futures pointed to a slight rebound on Wall Street on Wednesday, with futures for the S&P 500 up 0.34 percent, Dow Jones futures up 0.12 percent and Nasdaq 100 futures up 0.51 percent at 0921 GMT."; 
console.log(text.match(/(\d[\d\.]*)/g)); 

vous pouvez filtrer les numéros invalides par exemple 55.55.55 avec le code suivant:

var numbers = []; 
text.replace(/(\d[\d\.]*)/g, function(x) { var n = Number(x); if (x == n) { numbers.push(x); } }) 
3

Cette expression régulière devrait fonctionner:

/[-+]?[0-9]*\.?[0-9]+/g 

Un test:

"NEW YORK (Reuters) U.S. stock index futures pointed to a slight rebound on Wall Street on Wednesday, with futures for the S&P 500 up 0.34 percent, Dow Jones futures up 0.12 percent and Nasdaq 100 futures up 0.51 percent at 0921 GMT.".match(/[-+]?[0-9]*\.?[0-9]+/g) 

renvoie ce tableau:

["500", "0.34", "0.12", "100", "0.51", "0921"] 
+0

votre solution échouera le: "123.45.67 .56" par exemple. –

+3

Selon ce que vous entendez par "échouer". Il retournerait ["123.45", ".67", ".56"] '. "123.45.67" n'est pas un flotteur. Vous pourriez également dire qu'il échouerait sur 1 000 000 ou 1 000 000 - cela dépend simplement de ce dont vous avez besoin. – Matt

+0

C'est celui que j'ai utilisé. Merci –

Questions connexes