如何在javascript中从字符串中提取浮点数

giz*_*gok 9 javascript regex

我在textarea中有xml内容,可以是这种形式,

<tag value="20.434" value1="-12.334" /> 
Run Code Online (Sandbox Code Playgroud)

要么

20.434 -12.334
Run Code Online (Sandbox Code Playgroud)

我希望能够每行提取两个浮点数.

acd*_*ior 28

您可以/[+-]?\d+(\.\d+)?/g结合使用正则表达式String.match()来解析数字并将Array.map()它们转换为浮点数:

var regex = /[+-]?\d+(\.\d+)?/g;

var str = '<tag value="20.434" value1="-12.334" />';
var floats = str.match(regex).map(function(v) { return parseFloat(v); });
console.log(floats);

var str2 = '20.434 -12.334';
var floats2 = str2.match(regex).map(function(v) { return parseFloat(v); });
console.log(floats2);

var strWithInt = "200px";
var ints = strWithInt.match(regex).map(function(v) { return parseFloat(v); });
console.log(ints);
Run Code Online (Sandbox Code Playgroud)

请在此处查看演示代码

  • @JayaramRPai这很好,但是有一些小问题:它不匹配简单的东西,例如`1`并且会匹配像`1 ...... 1`这样的东西.对于整数和浮点数,我建议将它改编为`var regex =/[+ - ]?\ d +(\.\ d +)?/ g;`. (2认同)