Expressões Regulares – Começando com REGEX
Praticamente todas a linguagens possuem um interpretador de REGEX. Expressões regulares são um conjunto de caracteres que este interpretador consegue ler e fazer um match quando algo bate com o que foi passado.
Se você é programador a algum tempo, certamente se deparou com uma. São aqueles códigos como este:
regex = /^([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/
Você deve estar se perguntando: “Que diabos são essas letras/números e como ela é interpretada?” A resposta é: Calma, vamos chegar lá.
Expressões regulares simples
Vamos primeiro entender algo simples.
No exemplo acima, nós conseguimos dar match com o que foi passado na $regex com o $texto informado. Neste caso está óbvio, pois a $regex é idêntica ao $texto.
Expressões regulares com duas opções
Agora vamos imaginar que eu queria dar match em duas opções. Corro de burro quando foge, e Fujo de burro quando foge. Desta forma teremos a seguinte expressão:
Neste exemplo utilizamos os parenteses para que possamos utilizar mais de uma combinação. O operador | serve para que possamos dizer: De match com isto, ou isto. (Mais abaixo vou deixar uma tabela com os operadores que mais iremos usar no dia a dia)
De maneira alguma indico que você comece tentando fazer er complexas. Comece pelo simples.
Primeiro vamos conhecer os carácteres que utilizamos nas ERs.
Carácteres Representantes
. | Um carácter qualquer |
[…] | Lista de carácteres permitidos |
[^…] | Lista de carácteres não permitidos |
(…) | Grupo de caracteres |
Carácteres quantificadores
Usados para determinar a quantidade de carácteres que serão validados.
? | Zero ou um |
* | Zero, um ou mais |
+ | Um ou mais |
{n,m} | De n até m |
Âncora
^ | Início da linha |
$ | Final da linha |
\b | Início ou fim de uma palavra |
Para validarmos por exemplo um número de telefone no formato (00) 0000-0000 ou (00) 00000-0000 podemos fazer da seguinte forma:
/\([0-9]{2}\) [0-9]{4,5}\-[0-9]{4}/
Esta expressão regular irá dar match com (11) 98787-8787 ou também com (11) 4747-4747.
Entendendo a Expressão Regular
o carácter “\” (barra invertida) serve como um “escape” como os () são utilizados como forma de agrupamento, temos que dizer que neste caso em especifico eles são caracteres comuns, e devem ser considerados.
Após dizermos que temos “(” para dar match, informamos que o que vem em seguida é uma sequencia de número de 0-9. Seguindo dizemos que são no máximo 2 caracteres. Ou seja, uma sequencia de 2 caracteres que sejam de 0-9.
Por fim, dizemos que fechamos o parenteses “)”. Sempre lembrando do escape \.
Após isso vemos que temos um espaço, que corresponde ao espaço entre o DDD e o restante do número. Este espaço não está ai a toa, ele também é considerado pela nossa regex.
Logo em seguida, temos mais uma combinação de números, só que desta forma podemos ter uma sequencia de 4 dígitos, ou de 5 dígitos. Por isso usamos desta forma {4,5}
.
Depois utilizamos mais uma vez o escape para o “-” (traço) e por fim validamos a ultima sequencia de números.
Existem sites que testam as expressões regulares para gente. Um deles é o Regex Tester
Expressões regulares não são um bicho de 7 cabeças como parecem ser. Elas são muito simples depois que você entende o que cada coisa faz. Além do mais, quando você aprende a domina-las verá que o mundo é muito mais fácil com elas. Expressões regulares economizam (muito) o monte de IFs que teríamos que fazer para validar algo, por exemplo.