正则表达式获取任何类型的所有数字

时间:2016-03-02 18:06:38

标签: javascript regex exponent

我有这样的字符串:

  

" 1 -2 -0.00529366960223319 -1.72662226752857E-5 some text"

我想将数字解析为数组,使用javascript删除文本,以返回:

[1, -2, -0.00529366960223319, -1.72662226752857E-5]

我尝试了很多表达式,如下所示:

  

/ [ - +] [0-9] * [0-9] +([EE] [ - +] [0-9] +)???/

没有成功,有什么帮助?

提前感谢!

2 个答案:

答案 0 :(得分:4)

你不需要正则表达式:

function isNumeric(n) {  /* http://stackoverflow.com/a/1830844/1529630 */
  return !isNaN(parseFloat(n)) && isFinite(n);
}
var str = "1 -2 -0.00529366960223319 -1.72662226752857E-5 some text",
    arr = str.split(" ").filter(isNumeric).map(Number);

答案 1 :(得分:0)

您可以使用此正则表达式:/[-+]?\d*\.?\d+([eE][-+]?\d+)?/g

你快到了。
如果你真的想要它,请记住逃避.之类的所有特殊标志,否则它将与任何角色相匹配 正则表达式末尾的g启用全局匹配。

var src = "+1 -2 -0.00529366960223319 -1.72662226752857E-5 some text 25e46";

var reg = /[-+]?\d*\.?\d+([eE][-+]?\d+)?/g;

res = src.match(reg);

// The matches are in elements 0 through n.
for (var i = 0; i < res.length; i++) {
    document.body.innerHTML += "submatch " + i + ": " +  res[i] + "<br/>";
}