mariohmol / js-brasil

Javascript Validate, Mask, Faker e Utils para Tipos do Brasil: Celular, CEP, Certidão, CNH, CNPJ, CNS, CPF, Currency, Date, ECT, EMAIL, Empresa, Endereço, Inscrição Estadual, Number, Percentage, Pessoa, PIS/PASEP, Placa de carro, Processo da justiça, RENAVAM , RG , Site, Telefone , Time (data/hora), Título de Eleitor , Veículo
http://geradorbrasileiro.com
MIT License
235 stars 37 forks source link

Telefone #38

Closed sirbaconjr closed 1 year ago

sirbaconjr commented 4 years ago

Os números de telefone no Brasil segue uma padronização, eu fiz um regex que valida todos eles

https://gist.github.com/ejkun/ddda855a10ce4bf70022a4d91e3b8402

Talvez dê pra usar para validação, já que não está validando 0800

sirbaconjr commented 4 years ago

O que diz @mariohmol?

mariohmol commented 4 years ago

top eihn??

o lance é.. quando faço validacao.. retiro todos os caracteres especiais.. pq as vezes o cara grava so o numero.. alguns usam - outros nao.. dai pra universalizar.. deixo so os numeros e valido.. se conseguir fazer algo assim acho q tem um bom fit

hj ta bem simples.. olha so.. https://github.com/mariohmol/js-brasil/blob/master/src/validate.ts#L478

sirbaconjr commented 4 years ago

Então, eu fiz exatamente isso ontem, pq precisava dessa solução.

const phoneRegex = /^(([0-9]{2})((7[0|7|8|9])|([2|3|4|5][0-9])|([7|8|9][0-9]{2}))[0-9]{2}[0-9]{4})|(0[8|3|5|9]00[0-9]{3}[0-9]{4})$/;
mariohmol commented 4 years ago

filé!! entao além do validate.. tem q fazer um create pra ele.. q é usado no fakerBr https://github.com/mariohmol/js-brasil/blob/master/src/faker.ts#L376

Essa função tem q gerar um telefone valido.. essa chamada makeGenericFaker(MASKS['telefone'])() faz um numero ja no padrao basico .. dai ele fixa um DDD valido... se o faker continuar passando nesse validate massa..

alem disso seria bom ter alguns tests cases q valida esse regex.. tipo uns casos que sao invalidos e casos validos https://github.com/mariohmol/js-brasil/blob/master/test/validate.ts#L257

sirbaconjr commented 4 years ago

Podemos fazer um faker de regex

http://fent.github.io/randexp.js/#r=%5E%28%28%5B0-9%5D%7B2%7D%29%28%287%5B0%7C7%7C8%7C9%5D%29%7C%28%5B2%7C3%7C4%7C5%5D%5B0-9%5D%29%7C%28%5B7%7C8%7C9%5D%5B0-9%5D%7B2%7D%29%29%5B0-9%5D%7B2%7D%5B0-9%5D%7B4%7D%29%7C%280%5B8%7C3%7C5%7C9%5D00%5B0-9%5D%7B3%7D%5B0-9%5D%7B4%7D%29%24&i

mariohmol commented 4 years ago

entao.. é o q esa funcao faz makeGenericFaker

de uma forma mais simples claro... a ideia é nao incluir mais libs pra nao crescer demais o js final

rafahsborges commented 4 years ago

@mariohmol, como eu faria para utilizar no mesmo campo o validador de telefone e celular?

andrejm7 commented 4 years ago

aproveitando.. porque o telefone e o celular tem a mesma máscara?

sendo que celular seria assim: (XX) XXXXX - XXXX

e telefone residencial assim: (XX) XXXX - XXXX

como fazer para usar a máscara assim (XX) XXXX - XXXX

mariohmol commented 4 years ago

@rafahsborges .. acho q o campo validar telefone serve pra fixo e celular... nao? Saca estes teste: https://github.com/mariohmol/js-brasil/blob/master/test/validate.ts#L403

deu algum problem c vc?

mariohmol commented 4 years ago

@andrejm7 acho q hj em dia praticamente todos os estados implementaram o 9 digito pra telefone fixo, nao?

andrejm7 commented 4 years ago

@mariohmol não.. aqui em SC ainda é 8 dígitos para fixo.. tipo assim: (XX) XXXX - XXXX

mariohmol commented 4 years ago

Mas aqui, ele valida true com fixo usando 8 digitos... em qual caso vc esta tendo problema? https://github.com/mariohmol/js-brasil/blob/master/test/validate.ts#L413

rafahsborges commented 4 years ago

Pelo menos na versão que eu estava utilizando, quando queria ou tentava algo assim (61) 9 3...que seria um telefone fixo, ele bloqueia e só permite celular mesmo, que seria com 8 ou 9.

mariohmol commented 4 years ago

c fala no mask ou no validate?

adicionei mais testes usando seu DDD e funcionou..... saca so https://github.com/mariohmol/js-brasil/blob/master/test/mask.ts#L214

andrejm7 commented 4 years ago

eu ainda tenho dificuldades de usar a sua máscara para celular ou para telefone residencial..

exemplo.. (48) 3535 1017 (48) 99936 2911

como usar o mesmo tipo de validação no mesmo campo?

mariohmol commented 4 years ago

@andrejm7 c ta rodando com angular?

pq assim.. usando esse repo, https://github.com/mariohmol/ng-brazil

se eu clono e dou um npm run start ele me abre o demo e o telefone funciona pra ambos bumeros

mariohmol commented 4 years ago

@rafahsborges agora temos o .celular q força celular.. o problema de tel que força 8 e 9 pq depende de localidade

mariohmol commented 1 year ago

ola, se o problema persistir, favor reabrir