A referência do criador desse script está aqui:
http://elcio.com.br/ajax/mascara/
de minha autoria, é a máscara mvalor, e mais algumas simples como a mrg
/* Máscaras ER */ function mascara(o,f){ v_obj=o v_fun=f setTimeout("execmascara()",1) } function execmascara(){ v_obj.value=v_fun(v_obj.value) } function mcep(v){ v=v.replace(/\D/g,"") //Remove tudo o que não é dígito v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações return v } function mtel(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/^(\d{2})(\d)/g,"($1) $2"); //Coloca parênteses em volta dos dois primeiros dígitos v=v.replace(/(\d)(\d{4})$/,"$1-$2"); //Coloca hífen entre o quarto e o quinto dígitos return v; } function cnpj(v){ v=v.replace(/\D/g,"") //Remove tudo o que não é dígito v=v.replace(/^(\d{2})(\d)/,"$1.$2") //Coloca ponto entre o segundo e o terceiro dígitos v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos v=v.replace(/\.(\d{3})(\d)/,".$1/$2") //Coloca uma barra entre o oitavo e o nono dígitos v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca um hífen depois do bloco de quatro dígitos return v } function mcpf(v){ v=v.replace(/\D/g,"") //Remove tudo o que não é dígito v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos //de novo (para o segundo bloco de números) v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos return v } function mdata(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/(\d{2})(\d)/,"$1/$2"); v=v.replace(/(\d{2})(\d)/,"$1/$2"); v=v.replace(/(\d{2})(\d{2})$/,"$1$2"); return v; } function mtempo(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/(\d{1})(\d{2})(\d{2})/,"$1:$2.$3"); return v; } function mhora(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/(\d{2})(\d)/,"$1h$2"); return v; } function mrg(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito v=v.replace(/(\d)(\d{7})$/,"$1.$2"); //Coloca o . antes dos últimos 3 dígitos, e antes do verificador v=v.replace(/(\d)(\d{4})$/,"$1.$2"); //Coloca o . antes dos últimos 3 dígitos, e antes do verificador v=v.replace(/(\d)(\d)$/,"$1-$2"); //Coloca o - antes do último dígito return v; } function mnum(v){ v=v.replace(/\D/g,""); //Remove tudo o que não é dígito return v; } function mvalor(v){ v=v.replace(/\D/g,"");//Remove tudo o que não é dígito v=v.replace(/(\d)(\d{8})$/,"$1.$2");//coloca o ponto dos milhões v=v.replace(/(\d)(\d{5})$/,"$1.$2");//coloca o ponto dos milhares v=v.replace(/(\d)(\d{2})$/,"$1,$2");//coloca a virgula antes dos 2 últimos dígitos return v; }
Forma de uso
<input type="text" onkeyup="mascara(this, mvalor);" />
Se você está precisando de uma máscara para telefone com o nono dígito, veja aqui:mascara com expressão regular do nono dígito do estado de são paulo.