2017-06-23 17 views
-1

文字列にはテキストの通貨が含まれています。私は、通貨を浮動小数点形式で取得する必要があります。変換は、今私は2つのステップでそれを行うために正規表現の通貨形式

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 

を動作するはずですどのように

例。最初の式が除外さだけ0-9.,

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

私は私の第二の正規表現で

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

を苦労していますこの1つは、最後のものを除くすべてのドットまたはコンマと一致します。

この2番目の正規表現を使用して逆にするにはどうすればよいですか?だから、.,をマッチさせるのではなく、それ以外のものとマッチさせてください。

+0

'/([0-9] +)/ g' ... –

+0

この式で私はコンマを失います – justijn

+0

あなたの文字列はすべてこの形式ですか? –

答えて

0

私は少し違ったアプローチをとっていました。

コメントの一部の人が私を誤解していると思います。私が受け取る文字列は、アメリカ表記またはヨーロッパ表記で書かれています。例:

American: 1,345.20 = European 1.345,20 

,.は、両方の桁区切りや小数点区切り

として使用することができます私はすべての数のグループを取った後、最後の1を除いてそれらを結合。その間にドットを入れ、最後のものをフロートに追加します。

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)); 

文が0.value

10 => 0.10などの追記に変換する ,または .せずに数を防ぐためであればザ・:私はいくつかのものを行うために lodashを使用しています。