Vamos falar de RegEx?(Parte2) Colocando o DART/FLUTTER em prática
Tags: regex, regularexpression, flutter, dart
Published: 2024-04-20 04:13:06

### Utilizando no DART.

Agora vamos falar da parte que realmente importa que é a utilização dos RegEx em nossa linguagem favorita o DART.

Se não conferiu a Parte 1 deste artigo, onde eu explico detalhadamente o que é RegEx volte no na primeira parte

Para utilizar **RegEx** no DART utilizaremos a classe **RegExp()** que espera uma String contendo sua expressão regular como parâmetro. Ex. **RegExp(‘[//w]’)**. Para não precisarmos ficar cancelando os caracteres especiais do dart, como a barra, geralmente iniciamos nossa String com o **r** para utilizarmos nossos caracteres da String na forma literal. Ex. **RegExp(r‘[/w]’)**.

Agora para validar se um e-mail é valido ou não podemos utilizar a RegEx que criamos anteriormente e utilizando um dos métodos do RegExp para verificar se houve combinação do e-mail fornecido com a expressão Regular.

![](https://cdn-images-1.medium.com/max/800/1*Fg4RQzRRFGeHDEZky8GR7Q.png)

![](https://cdn-images-1.medium.com/max/800/1*odlz58JBjMrKUP0L-5y5Ig.png)

Também conseguimos validar String com múltiplas linhas, basta adicionar na instancia do **RegExp** o parâmetro **multiLine** passando o valor **true**.

![](https://cdn-images-1.medium.com/max/800/1*8ddGJ0k5jFFKbautVrLtdQ.png)

Temos a função **allMatches()** que nos retornara todas as combinações encontradas dentro da **String**, isso me retornara uma lista de **Matches** que podemos recuperar todos os grupos que tiveram combinações onde o **0** é a combinação completa e do **1** são as combinações separadas por grupos

![](https://cdn-images-1.medium.com/max/800/1*SFF7j2pwXCGZ6LpKmLjZZA.png)

![](https://cdn-images-1.medium.com/max/800/1*fn6mNwL8b_439pwtcBREbQ.png)

Utilizando o exemplo das tags HTML que vimos na seção de grupos vamos utilizar o RegEx.

> **<([\w\s]+)>([\w\s]+)<(?:[/])(\1)>**

![](https://cdn-images-1.medium.com/max/800/1*7oia84tzCqrn0mNtXHb4bw.png)

O resultado será

![](https://cdn-images-1.medium.com/max/800/1*XUUIm2xWqacf1tL4vr4XbQ.png)

Para saber mais sobre a classe RegEx visite o documentação oficial do flutter

> [https://api.flutter.dev/flutter/dart-core/RegExp-class.html](https://api.flutter.dev/flutter/dart-core/RegExp-class.html)

### Utilizando no Flutter

No Flutter há uma infinidade de maneiras de se utilizar **RegEx**, o mais comum é utilizar para validar formulários para isto basta utilizarmos o **TextFormField()** e na propriedade **validator** construiremos nossa regra para validar se nosso campo esta valido ou não, para isso retornaremos uma String qualquer caso o campo esteja invalido ou **null** caso o campo esteja valido

![](https://cdn-images-1.medium.com/max/800/1*aKthkKF_iV9i3TShRO8ECg.png)

Para que a validação seja disparada é necessário disparar o **validate()** do formulário, para isso envolveremos nosso campo em um **Form()** dando uma chave para o formulário e logo em seguida criaremos um botão que irá disparar a validação.

![](https://cdn-images-1.medium.com/max/800/1*8WVtpN_TVPEudXpNyO9p0A.png)

O resultado será

![](https://cdn-images-1.medium.com/max/800/1*H8o_78idPClKgIVM4wxMUg.gif)

Também conseguimos habilitar para que o campo faça a validação no momento que o usuário interagir com o formulário, basta utilizar a propriedade **autovalidateMode**

![](https://cdn-images-1.medium.com/max/800/1*btbo8smNq14oLFAuLrfITQ.png)

Agora podemos simplesmente utilizar nossa RegEx para validar o e-mail.

![](https://cdn-images-1.medium.com/max/800/1*Lwo4321na16EBvobO5mHzw.png)

![](https://cdn-images-1.medium.com/max/800/1*P0vZB0w17Tdff1OkbbkkjQ.gif)

Também conseguimos utilizar para validar mascaras de entrada, gosto bastante do package [https://pub.dev/packages/mask_text_input_formatter](https://pub.dev/packages/mask_text_input_formatter) nele conseguimos passar um RegExp com os dados permitidos de entrada.

![](https://cdn-images-1.medium.com/max/800/1*LbI6McVzw6V4SoMxbYDV1A.png)

![](https://cdn-images-1.medium.com/max/800/1*iLW8RnrsjZs8jzAcVVGFdQ.gif)

Há infinitas possibilidades de utilização de RegEx dentro e fora da programação e como virão é muito simples seu entendimento e construção.

Espero que tenham aprendido um pouco deste mundo.

Até a Próxima :)

https://github.com/toshiossada/DartRegex
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/obcg0d2y00yddve9quky.png)


Entre em nosso discord para interagir com a comunidade: https://discord.com/invite/flutterbrasil
https://linktr.ee/flutterbrasil