如何使用javascript从带有小数的字符串中提取数字

时间:2014-05-28 14:12:39

标签: javascript

Hey Folks我正试图从看起来像这样的变量中提取金额。

var amountStr  = "iPhone ($45.00)";

我已尝试使用以下代码将其解压缩

var amountNum= amountStr.replace( /^\D+/g, '');

输出如何如下

45.00)

有人能让我知道我应该如何以更清洁的方式放弃最后一个')'

谢谢。

2 个答案:

答案 0 :(得分:3)

你的正则表达式中有一个“文本开头”标记。这就是它与点或括号不匹配的原因。

var amountNum= amountStr.replace( /\D+/g, '');

将替换字符串中的所有非数字。但是你需要你的点,所以应该使用它:

var amountNum= amountStr.replace( /[^\d\.]+/g, '');

接下来,为了确保您确实有一个数字(不是字符串),以便您可以执行正确的添加,请使用:

var amountNum = parseFloat(amountStr.replace( /[^\d\.]+/g, ''));

但是,如果你有像“iPhone3($ 45.00)”这样的字符串,结果将是345而不是45。你需要在这个字符串中找到你需要的东西,而不是寻找你不需要的东西。一个例子就是:

var amountNum = parseFloat(amountStr.match( /\d+(\.\d+)?/g)[0]);

这也不适用于“iPhone3”,但至少你不会有345,只有3。

所以只需查找最后一个数字,如下:

var amountNum = parseFloat(amountStr.match( /\d+(\.\d+)?/g).pop());

答案 1 :(得分:0)

使用substring方法并指定两个括号之间的金额索引(可以通过括号索引找到)

var amountStr  = "iPhone ($45.00)";
var n1 = amountStr.indexOf("(");
var n2 = amountStr.indexOf(")");    
var amountNum= amountStr.substring(n1+2, n2)