我需要從字符串中獲取貨幣。我的價格可以有多種格式。我們來看一下例如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
該字段從數據庫字符串填充。所以驗證已經完成。然而,之前在該項目上工作的人決定放置字符串,而不是浮動,出於某種原因。我不必擔心「,」或特殊字符。我只需要獲取浮點數。 –