Formatar em moeda reais com expressão regular em javascript
Boas!
Fiz aqui rapidinho uma função getMoney() que recebe uma string no formato: R$ 1.000,00 e retorna um inteiro, para podermos fazer contas em javascript.
Depois uma outra função formatReal() que recebe um inteiro e devolve o número formatado segundo a nossa moeda: Real.
Entrada:
console.log( formatReal( 1000 ) );
console.log( formatReal( 19990020 ) );
console.log( formatReal( 12006 ) );
console.log( formatReal( 111090 ) );
console.log( formatReal( 1111 ) );
console.log( formatReal( 120090 ) );
Saida:
10,00
199.900,20
120,06
1.110,90
11,11
1.200,90
Utilizei a função str.replace() nativa da linguagem javascript, e algumas expressões regulares.
Atualmente só formata até 999mil reais, não fiz a ER para colocar o ponto dos milhões.
<script type="text/javascript"> type="text/javascript">
var test = 'R$ 1.700,90';
function getMoney( str )
{
return parseInt( str.replace(/[\D]+/g,'') );
}
function formatReal( int )
{
var tmp = int+'';
tmp = tmp.replace(/([0-9]{2})$/g, ",$1");
if( tmp.length > 6 )
tmp = tmp.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2");
return tmp;
}
var int = getMoney( test );
//alert( int );
console.log( formatReal( 1000 ) );
console.log( formatReal( 19990020 ) );
console.log( formatReal( 12006 ) );
console.log( formatReal( 111090 ) );
console.log( formatReal( 1111 ) );
console.log( formatReal( 120090 ) );
console.log( formatReal( int ) );
</script>