Como remover máscaras com Expressões Regulares
Para entender Expressões Regulares, é preciso conseguir enxergar os padrões das strings.
Um telefone possui o seguinte padrão:
(xx) xxxx-xxxx ou no caso de São Paulo(neste momento): (xx) 9xxxx-xxxx
Sendo cada x, um número 1,2,3,4,5,6,7,8 ou 9.
Eu posso escrever uma ER que case com os telefones assim:
([0-9]{2}) 9?[0-9]{4}-[0-9]{4}
Sendo o 9 ali “opcional”. Para remover a máscara de números de telefone, posso procurar quais são os caracteres que não quero, e tirá-los:
str.replace('(','').replace(')', '').replace(' ','').replace('-','');
Mas isso é deveras trabalhoso.
Eu poderia fazer uma Expressão Regular para pegar todos esses caracteres e remover eles:
str.replace(/[\(\)\.\s-]+/g,'');
Mas ai, tb ainda não tá bacana.
Posso pensar ao contrário: remover tudo, menos oque eu quero:
str.replace(/[^0-9]+/g,'');
Ou seja, removo tudo oque não for números de 0 até 9. Ou se preferir: /[\D]+/g == /[^\d]+/g
Lembrando que \d é o mesmo que [0-9].