我需要从字符串中获取货币。我的价格可以有多种格式。我们来看一下例如CAD vs USD。 CAD将被格式化是这样的:多种货币的Javascript正则表达式
$ 5.00 CAD
尽管美元将被格式化,这样
$ 5.00美元
该系统还支持欧元和英镑。显然价格可能在几千美元。
这里是我的失败尝试:
result = /^([^\$]+)\$/i.exec(price.text());
我需要从字符串中获取货币。我的价格可以有多种格式。我们来看一下例如CAD vs USD。 CAD将被格式化是这样的:多种货币的Javascript正则表达式
$ 5.00 CAD
尽管美元将被格式化,这样
$ 5.00美元
该系统还支持欧元和英镑。显然价格可能在几千美元。
这里是我的失败尝试:
result = /^([^\$]+)\$/i.exec(price.text());
钱通常表示为[int
,currency
]元组。我会瞄准这样的格式。
你的字符串似乎有点绒毛。 $
为一。
因此,如何:
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.
哇 - 我不知道我的理解 - 你只需要提取数(千,整体与部分十进制)BUIT不是货币类型???汇率呢?还有其他列表明货币类型吗?只是看起来很奇怪...
但是,如果该列只包含一个带有amnount和货币指标的字符串,那么[\d.,]+
应该得到数字(以及任何尾随或前导逗号或句点) - 是否适合您?
是的,实际上数据库是有点混乱。之前与这个项目合作的人把一个简单的字段放在字符串中。真的很奇怪,但我必须处理它。我试图努力。简单\ d完成了这项工作。谢谢。 –
只是一个简单的问题 - 许多欧洲货币使用'''作为小数分隔符 - 您的数据是否没有? –
您能期待什么错误的输入? – Halcyon
你只是想把号码拿出来吗? '/(\ d | \。)+ /'? (这显然是一个粗糙的正则表达式,但它听起来像会做这项工作。) – Mathletics
该字段从数据库字符串填充。所以验证已经完成。然而,之前在该项目上工作的人决定放置字符串,而不是浮动,出于某种原因。我不必担心“,”或特殊字符。我只需要获取浮点数。 –