CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

JavaScript/jQuery - Expressões regulares

Por Benedito Silva Júnior - publicado em 19/07/2016


Expressões Regulares são arranjos de caracteres que formam um padrão que você pode usar em strings para encontrar associações, fazer substituições ou localizar substrings específicas.

Você pode criar uma expressão regular explicitamente usando o objeto RegExp, embora também possa criar uma usando um literal. O seguinte usa a opção explícita:

var padraoDePesquisa = new RegExp('s+');

A próxima linha de código demonstra a opção RegExp literal:

var padraoPesquisa = /s+/;

Em ambos os casos, o sinal de (+) no padrão de pesquisa após o caractere s associa um ou mais uso consecutivo de s em uma string. A barra com o literal (/s+/) marca que o objeto sendo criado é uma expressão regular e não algum outro tipo de objeto.

O método search é útil para localizar termos em uma determinada expressão. Caso o termo seja encontrado, retorna a posição do termo na string. Caso não seja encontrado, retorna -1. Exemplo:

<script type="text/javascript"> var texto = "Expressões regulares em Javascript"; //Verificar se no texto recebido existe a expressão "java script": var RegExp = /Javascript/; if (texto.search(RegExp) != -1) { document.write("Expressão encontrada na posição: "+ texto.search(RegExp)); } else { document.write("Expressão não encontrada!"); } </script>

O método test é muito utilizado para validação de formulários (CEP, e-mail, datas, formatos monetários, CPF, CNPJ, placas de veículos, dentre outros). Caso a Expressão seja encontrada, retorna "true", caso contrário retorna "false".

Exemplo:

<script type="text/javascript"> var texto = "klonder@klonder.com.br"; /* Verificando se o texto recebido é iniciado por um ou mais algarismos (^[\w]+); seguidos de arroba (@); Seguido de um ou mais algarismos ([\w]+); Seguido(s) de um ponto (\.); Seguido (e finalizado) por um ou mais algarismos ou pontos ([\w|\.]+$); */ var RegExp = /^[\w]+@[\w]+\.[\w|\.]+$/; if (RegExp.test(texto) == true) { document.write("Formato válido!"); } else { document.write("Formato inválido!"); } </script>

O método match é capaz de armazenar em um array algumas propriedades da expressão regular que forem localizadas na string. Em caso positivo, retorna cada termo localizado em um array associativo. Caso contrário, retorna null.

Sintaxe: texto.match(RegExp)[propriedades ou índices]

As suas propriedades são:

3.1 - input -> String de entrada;
3.2 - index -> Posição do primeiro caractere do segmento da string que atende à ER;
3.3 - lastIndex -> Posição do último caractere do segmento da string que atende à ER;

E os seus índices são:

3.4 - [0] -> Retorna a parte da string que atende à ER;
3.5 - [1],[2] etc -> Retorna os termos da string casados em cada grupo da ER;

Exemplo:

<script type="text/javascript"> //Frase recuperada de um campo text, por exemplo: var texto = "Eu nasci em 27/55/1350"; /* Verificando se o texto recebido contém dois números (([\d]{2})): veja que estão entre parênteses, seguidos de barra (\/); Seguida de dois números (([\d]{2})): veja que estão entre parênteses; seguidos de barra (\/); Seguida de quatro números (([\d]{4})): veja que estão entre parênteses; Os parênteses determinam os grupos! */ var RegExp = /([\d]{2})\/([\d]{2})\/([\d]{4})/; if (texto.match(RegExp) != null) { document.write("Propriedades do método match: <br>"+ "Frase: "+texto.match(RegExp).input+"<br>"+ "Posição do 1º caractere: "+texto.match(RegExp).index+"<br>"+ "Posição do último caractere: "+texto.match(RegExp).lastIndex+"<br>"+ "Resultado da ER: "+texto.match(RegExp)[0]+"<br>"+ "Primeiro grupo: "+texto.match(RegExp)[1]+"<br>"+ "Segundo grupo: "+texto.match(RegExp)[2]+"<br>"+ "Terceiro grupo: "+texto.match(RegExp)[3]+"<br>"); } else { document.write("Nenhum texto ou expressão foram casados!"); } </script>

O método replace é o método de uma string e é nativo do JavaScript. No entanto, pode ser utilizado em conjunto com as Expressões Regulares extendendo significativamente a capacidade de manipulação dos grupos casados na string, pela ER.

<script type="text/javascript"> //CPF recuperada de um campo text, por exemplo: var texto = "58469820147"; /* Dividindo por grupos: Verificando se a expressão é iniciada por 3 números (^([\d]{3})); seguidos de 3 números (([\d]{3})); seguidos de 3 números (([\d]{3})); seguidos de 2 números e finalizada (([\d]{2})$); */ var RegExp = /^([\d]{3})([\d]{3})([\d]{3})([\d]{2})$/; if (texto.search(RegExp) != -1) { var mascCPF = texto.replace(RegExp,"$1.$2.$3-$4"); document.write (mascCPF); } else { document.write("Nenhum texto ou expressão foram casados!"); } </script>


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo