2013-10-01 47 views
0

我需要從字符串中獲取貨幣。我的價格可以有多種格式。我們來看一下例如CAD vs USD。 CAD將被格式化是這樣的:多種貨幣的Javascript正則表達式

$ 5.00 CAD

儘管美元將被格式化,這樣

$ 5.00美元

該系統還支持歐元和英鎊。顯然價格可能在幾千美元。

這裏是我的失敗嘗試:

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

您能期待什麼錯誤的輸入? – Halcyon

+2

你只是想把號碼拿出來嗎? '/(\ d | \。)+ /'? (這顯然是一個粗糙的正則表達式,但它聽起來像會做這項工作。) – Mathletics

+0

該字段從數據庫字符串填充。所以驗證已經完成。然而,之前在該項目上工作的人決定放置字符串,而不是浮動,出於某種原因。我不必擔心「,」或特殊字符。我只需要獲取浮點數。 –

回答

1

不要過時。

/(\d|\.)+/ 

將拉出的數字。

你也可以做一個替換,每adeneo,把它清理乾淨:

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

然後parseFloat如果您需要。

0

通常表示爲[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. 
1

哇 - 我不知道我的理解 - 你只需要提取數(千,整體與部分十進制)BUIT不是貨幣類型???匯率呢?還有其他列表明貨幣類型嗎?只是看起來很奇怪...

但是,如果該列只包含一個帶有amnount和貨幣指標的字符串,那麼[\d.,]+應該得到數字(以及任何尾隨或前導逗號或句點) - 是否適合您?

+0

是的,實際上數據庫是有點混亂。之前與這個項目合作的人把一個簡單的字段放在字符串中。真的很奇怪,但我必須處理它。我試圖努力。簡單\ d完成了這項工作。謝謝。 –

+0

只是一個簡單的問題 - 許多歐洲貨幣使用'''作爲小數分隔符 - 您的數據是否沒有? –