适用于多种货币的Javascript正则表达式

时间:2013-10-01 14:50:07

标签: javascript regex

我需要从字符串中获取货币。我的价格可以有多种格式。我们以CAD与美元为例。 CAD将以这种方式格式化:

5.00 $ CAD

虽然美元将以这种方式格式化

$ 5.00 USD

该系统还支持欧元和英镑。显然价格可能在数千美元。

这是我不成功的尝试:

result = /^([^\$]+)\$/i.exec(price.text());

3 个答案:

答案 0 :(得分:1)

哇 - 我不确定我理解 - 你只想提取数字(数千,整数和小数部分)而不是货币类型???汇率怎么样?是否有其他列表明货币类型?看起来很奇怪...

但是如果列只包含带有amnount和货币指示符的字符串,那么[\d.,]+应该得到数字(以及任何尾随或引导逗号或句点) - 这对你有用吗?

答案 1 :(得分:1)

不要过度思考。

/(\d|\.)+/

将提取该号码。

您还可以按照adeneo进行替换以进行清理:

price.replace(/[^0-9.]/g, '')

然后parseFloat如果你需要。

答案 2 :(得分:0)

Money 通常表示为[intcurrency]元组。我的目标是这样的格式。

你的字符串似乎有一点点绒毛。一个$

那怎么样:

var db_string = "5.00$ CAD"; // or "$5.00 USD" or "€5.00 EUR"
var clean = db_string.replace(/[0-9A-Z ]/g, ""); // removes $ . and euro etc.
var parts = clean.split(" ");
var num = parseInt(parts[0], 10); // amount as int, in cents
var cur = parts[1]; // currency: USD, CAD, EUR etc.