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

IT技术 javascript regex
2021-03-14 20:33:21

我在 textarea 中有 xml 内容,它可以是以下形式,

<tag value="20.434" value1="-12.334" /> 

或者

20.434 -12.334

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

3个回答

您可以/[+-]?\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);

在此处查看演示代码。

@acdcjunior,我稍微修改了我的正则表达式,var regex = /[+-]?\d*\.*\d+/g;但我没有检查1......1可能性。你的很完美,非常感谢。
2021-04-30 20:33:21
@JayaramRPai 这很好,但有一些小问题:它不会匹配简单的东西,例如1并且会匹配1......1. 对于整数和浮点数,我建议将其调整为类似var regex = /[+-]?\d+(\.\d+)?/g;.
2021-05-01 20:33:21
var regex = /[+-]?\d+\.*\d+/g; 将获取整数和浮点数
2021-05-08 20:33:21

您始终可以将字符串加载到 jQuery 中并获取属性:

$('<tag value="20.434" value1="-12.334" />').attr('value')
$('<tag value="20.434" value1="-12.334" />').attr('value1')

在您的情况下,正则表达式可能是更好的途径。

一旦您弄清楚如何从文本之间提取数字,您将使用 parseFloat ……如何提取这些数字完全取决于该文本是什么。很可能您将在 \s 上拆分整个文本,然后删除所有不是数字和点的字符。那应该让你留下浮点数......尽管如此,如果不看看周围的文字是什么样子就不可能说出来。

编辑:好的,现在你已经改变了你的问题,答案是你只需获取名为 value 和 value1 的属性,并对它们中的内容运行 parse float 。如果您的文本区域包含此 XML,您将需要首先解析 XML 以获取作为对象的属性。

我什至不确定问题是什么......只需在可能包含浮点数的所有内容上运行 parseFloat,检查 isNaN(),如果它是假的,那么你有一个浮点数。
2021-04-20 20:33:21
格式可以是 xml 中的数字或只是数字。我不想将格式限制为 xml。
2021-05-03 20:33:21