2017-06-23 195 views
-1

我有一個字符串,其中包含帶有文本的貨幣。我應該以浮動格式獲得貨幣。在轉換應該如何工作正則表達式貨幣格式

Cash € 1,00   => 1.00 
Cash € 10,00   => 10.00 
Cash $ 10.00   => 10.00 
Maestro € 1,0000  => 1.0000 
Visa € 1.000,00  => 1000.00 
Cash € 1.000.000,00 => 1000000.00 
Cash $ 1,000,000.00 => 1000000.00 

對於

例子,現在我做2個步驟。第一個表達式過濾掉僅0-9.,

var regex = /(\d|\.|,)/g 
value = value.match(regex).join(''); 

我與我的第二個正則表達式

var regex2 = /(\.|,)(?=.*(\.|,))/g; 

這其中除了最後一個每個點或逗號匹配掙扎。

我如何使用這個第二正則表達式做逆?因此,不是匹配.,,而是匹配除此之外的其他所有內容。

+0

從我的理解你只需要寫:'/([0-9] +)/ g' ... –

+0

有了這個表達式我失去了我的逗號 – justijn

+0

你的字符串都是這種格式? –

回答

0

奧萊特我參加了一個稍微不同的方法給它。

我覺得有些人在評論誤解了我,我得到的字符串既可以寫在美國的符號或歐洲符號。例如:

American: 1,345.20 = European 1.345,20 

,.既可以採用作爲千位分隔符或小數點分隔

我把所有的號碼組,然後加入他們的行列,除了最後一個。然後,我在中間加一個點,並將最後一個添加到我的float中。

var regex = /([0-9]+)/g; 
var arrValues = value.match(regex); 
if(arrValues.length == 1) value.push(0); 
var newValue = parseFloat(_.initial(arrValues).join('') + '.' + _.last(arrValues)); 

的if語句是爲了防止一些不,.被轉換成0.value10 => 0.10

旁註:我使用lodash做一些東西。