Javascript:如何从字符串中提取多个数字

Javascript:如何从字符串中提取多个数字,javascript,string,Javascript,String,输入: 纽约(路透社)周三,美国股指期货显示华尔街股市略有反弹,标准普尔500指数期货上涨0.34%,道琼斯指数期货上涨0.12%,纳斯达克100指数期货上涨0.51%,至格林尼治时间0921 输出应该是包括浮点数在内的所有数字的数组 有点类似,但它只提取一个数字。这应该可以做到: var text = "NEW YORK (Reuters) U.S. stock index futures pointed to a slight rebound on Wall Street on Wednes

输入:

纽约(路透社)周三,美国股指期货显示华尔街股市略有反弹,标准普尔500指数期货上涨0.34%,道琼斯指数期货上涨0.12%,纳斯达克100指数期货上涨0.51%,至格林尼治时间0921

输出应该是包括浮点数在内的所有数字的数组

有点类似,但它只提取一个数字。

这应该可以做到:

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));
您可以使用以下代码过滤掉无效数字,例如
55.55.55

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

此正则表达式应该可以工作:

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

"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)
返回此数组:

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

正则表达式是解决问题的方法。您的解决方案将在“123.45.67.56”上失败,例如,取决于“失败”的含义。它将返回
[“123.45”、“0.67”、“0.56”]
。“123.45.67”不是浮动。你也可以说它会在1000或1000000失败-这取决于你需要什么。这是一个,我用的。谢谢