2010-11-12 15 views
0

Je veux d'accepter les prix et les convertir en entiers comme:Regex pour vérifier/fixer un prix avec un point/virgule et Parse en entier

1.400 -> true, "$1.400,00" , 140000 
    1.400,00 -> true, "$1.400,00" , 140000 
    1.400,0 or 1.400,000000 -> true, "$1.400,00" , 140000 
//get only the first 2 digits before the comma ->1.400,9394239 -> 1.400,93 
    1.400.000 -> true, "$1.400.000,00", 140000000 
    1.400.00 -> false 
    1.40.00 -> false 

    14,00 -> true, "$14,00" , 1400 
    14 -> true, "$14,00" , 1400 
    14.00 -> false 

Information: Mon projet est groovy.

Si possible, je voudrais résoudre ce problème parce que j'ai un projet qui ne le fait pas t use Double to deal with prices, it converts to Integers after treat the String just like that but in javascript, I understand some parts of the code but I don't know how to implement in groovy/java, but I.

String.prototype.formatNumber = function() { 
    var value = this.replace(",",".").replace(/[^\d\.]/g,''); 
    value = 0+value; 
    while (isNaN(value)) 
     value = value.substring(0,valor.length-1); 
    value = parseInt(value * 100)/100; 
    return value; 
} 

Répondre

0

Vérifiez contre cette regex première:

^(\d?\d?\d?\.?)*(,\d+)?$

Et si elle correspond, revisser les périodes (.) à blanc, et fendu à la virgule (,).