Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou tentando fazer um máscara de moeda com expressão regular, o meu código está assim:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Formata</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><script> function moeda(z){ v = z.value; v=v.replace(/\D/g,""); v=v.replace(/^(\d{2})(\d)/,"$1,$2"); z.value = v; }</script><body><input type="text" name="texto" size="20" style="text-align:right" onKeyUp="moeda(this);"></body></html>
Só que a expressão pega os caracteres da esquerda para a direita, e não da direita para a esquerda... Alguém sabe como fazer ele formatar certo com a expressão regular.
Obs: Sei que existem funções aqui no fórum que formatam moeda, só que preciso que seja formatada com expressão regular, pois fica mais fácil de utilizar em outras linguagens específicas
Bom Dia amigo eu estava com o mesmo problema que você. Queria formatar um valor monetário. Consegui resolver fazendo a seguinte expressão regular
function MaskMonetario(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
v=v.replace(/(\d{2})$/,",$1"); //Coloca a virgula
v=v.replace(/(\d+)(\d{3},\d{2})$/g,"$1.$2"); //Coloca o primeiro ponto
var qtdLoop = (v.length-3)/3;
var count = 0;
while (qtdLoop > count)
{
count++;
v=v.replace(/(\d+)(\d{3}.*)/,"$1.$2"); //Coloca o resto dos pontos
}
v=v.replace(/^(0)(\d)/g,"$2"); //Coloca hífen entre o quarto e o quinto dígitos
return v;
}
Eu usei as funções do nosso amigo Elcio passando esse meu método como parametro. O site do Elcio é http://elcio.com.br/ajax/mascara/ só colocar mais essa função no código do Elcio que você vai conseguir formatar direitinho o seu campo. Haaaaa só pra te explicar uma coisa para você fazer uma expressão regular fazer a busca na sua string pelo final basta você coloca o caracter $/ no final isso delimita o fim da string. Te aconcelho a dar uma olhada no site http://www.mhavila.com.br/topicos/web/valform.html tem algumas coisinhas legai de ER
Olá Katya.
Estava como mesmo problema, pesquisei não achei nada.
Após dois dias fritando o cerebro cheguei a isso:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Escute Bolores</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><script> function moeda(z){ v = z.value; v=v.replace(/\D/g,"") //permite digitar apenas números v=v.replace(/[0-9]{12}/,"inválido") //limita pra máximo 999.999.999,99 v=v.replace(/(\d{1})(\d{8})$/,"$1.$2") //coloca ponto antes dos últimos 8 digitos v=v.replace(/(\d{1})(\d{5})$/,"$1.$2") //coloca ponto antes dos últimos 5 digitos v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2") //coloca virgula antes dos últimos 2 digitos z.value = v; }</script><body>R$<input type="text" name="texto" size="11" style="text-align:right" onKeyUp="moeda(this);"></body></html>
Aqui funcionou beleza,
teste aí e posta o resultado
embolor@do
Direitos reservados a todos!!!hehehe!!!