Code Monkey home page Code Monkey logo

regex's Introduction

Regex

Regex, conceitos aprendidos e aplicados durante Trilha Front-End, curso:

  • Expressões regulares: capturando textos de forma mágica.

Conceitos aprendidos e aplicados:

  • Regex Engine;

  • Regex;

  • Meta-char:

    • \d - qualquer dígito numérico;
    • . "ponto" - qualquer char;
      • "asterisco";
    • ? "interrogação";
    • \s - whitespace;
    • \t - tab;
    • \r - carriage return;
    • \n - newline;
    • \f - form feed;
    • \w - wordchar;
    • ^ "circunflexo";
    • $ "cifrão";
    • \b - word boundary;
    • \B - Non word boundary;
    • (?:) - Non-capturing groups;
    • | - pipe;
    • [^] - ;
    • \W - non-word char;
    • \D - non-digit;
  • \ ("escapa" qualquer char):

  • . (ponto literal);

  • * (asterisco literal);

  • ( (abre parênteses literal);

  • [()/-] (dentro dos colchetes não são meta-char);

  • () (um regex entre parênteses e com a opção "Mostra grupo" selecionada mostra em "Matches" os grupos desejados);

  • (?:) (Não deve devolver o grupo que estiver entre parênteses e após "?:");

  • | (ou, utilizado para selicionar uma coisa ou outra);

  • Quantifier:

    • "?" - zero ou uma vez;
    • "*" - zero ou mais vezes;
    • "+" - uma ou mais vezes;
    • {n} - exatamente n vezes;
    • {n,} - no mínimo n vezes;
    • {n,m} - no mínimo n vezes, no máximo m vezes;
  • Classes:

    • \d == [0-9];
    • \s == \t \r \n \f;
    • [A-Z] - caracter de A a Z;
    • [123] == 1, 2 ou 3;
    • [^,]+ - qualquer caracter != ",";
    • \w == [A-Za-z0-9_];
    • [^>] - selecionar tudo o que não é ">";
  • Back-references:

    • \1 - igual ao primeiro grupo;
  • Âncoras (marcam uma posição específica no alvo, não podem ser utilizadas com quantifiers):

    • \b - deve ser colocado no início e no final, para localizar algo específico;
    • ^ - colocado no início, para determinar o início da string alvo;
    • $ - colocado no final, para determinar o final da string alvo;
    • \B - deve ser colocado no início e final, para localizar uma sílaba dentro de uma palavra;
    • \W == [^\w] - seleiona tudo o que não é \w;
    • \D == [^\d]- seleciona tudo o que não é \d;

Exemplos de Regex:

  • Buscar CNPJ ou CPF: \d{2,3}[/.-]?\d{3}[/.-]?\d{3}[/.-]?\d{2,4}[/-]?\d{0,2}

  • Telefone geral: [(]?\d{2}[)-.]?\d{3,5}[-.]?\d{3,4}[-.]?\d{0,3}

  • Classe definida. Exemplo: 1 a 3 e 6 a 9 || [1-36-9] || [A-Za-zç]

  • Data com mês por extenso (22 de Abril de 1987) [0123]?\d\s+(de\s+)?[A-Z][a-zç]{1,8}\s+(de\s+)?[12]\d{3}

  • Data geral (22/04/1987, 22.04.1987, 22/4/87, 22.4.87, 1-01-2017) [0123]?\d[/.-]?\d+[/.-]?[12]?\d{1,3}

  • Horário geral (19h32min16s 19h32m16s, 1:3:1 1'32'16 19h32) \d+[h:';.-]?\d+[a-z][':;.-]?\d[a-z]*

  • Placa de Automóveis Antiga ou Padrão Mercosul [A-Z]{3}-?\d?[A-Z]?\d{2,4}

  • Utilização de \b \bde\b (vai localizar somente "de" isolado)

  • Utilização de \B \Bde\B (vai localizar somente "de" dentro das palavras)

  • Variáveis no JavaScript:

    • Exemplo: 22 de Abril de 1987

      const DIA = "[0123]?\d"; const DE = "\s+de\s+"; const MES = "[A-Za-z][a-zç]{1,8}"; const ANO = "[12]\d{3}";

      let stringRegex = DIA + DE + MES + DE + ANO;

      let objetoRegex = new RegExp(stringRegex, 'g');

  • Extraindo usuários de e-mail's válidos

    • O email deve ter um @ e terminar com caelum.com.br ou alura.com.br;
    • O nome do usuário (tudo antes do @) tem apenas letras minúsculas, pode ter um número no final;
    • Tem de 5 a 15 caracteres.

([a-z.]{4,14}[a-z\d])@(?:caelum.com.br|alura.com.br)

  • Validação de qualquer e-mail ^([\w-].?)+@([\w-]+.)+([A-Za-z]{2,4})+$

  • Selecionar grupos:

    • Nome Completo;
    • Endereço e número;
    • Cep; Exemplo:
      • Entrada: Leonardo Cordeiro|01/01/1995|Rua de Campo Grande|01|00001-234|Rio de Janeiro
      • Saída: Leonardo Cordeiro|01/01/1995|Rua de Campo Grande|01|00001-234|Rio de Janeiro ||| Leonardo Cordeiro ||| Rua de Campo Grande ||| 01 ||| 00001-234

^([\w\s]+)|(?:\d\d/\d\d/\d\d\d\d)|([\w\s]+)|(\d{1,4})|(\d{5}-\d{3})|(?:[\w\s]{10,})$

  • Utilizando back-reference:
    • Entrada:

Expressões regulares não são tão difíceis.

  • Saída: Como inicia com h1, não vai selecionar. Só dará match se ambos estiverem em h1 ou h2.

<(h1|h2).+?>([\w\sõãí.]+)</\1>

  • Mensagem criptografada:
    • Entrada: Z171PZ7AZ23PZ7819AZ78GZ1AZ99IZ34O
    • Saída: P | A | P | A | G | A | I | O

[^Z\d]

  • REGEX no JavaScript:

  • Utilizando .replace():

var anoMesDia = '2007-12-31';

var exp = /-/g

anoMesDia = anoMesDia.replace(exp, '/');

  • resultado:

'2007/12/31';

  • Utilizando .split():
    • Extrair valores para que seja possível somá-los.

var arquivo = '100,200-150,200;20';

var exp = /[,;-]/;

var valores = arquivo.split(exp);

  • resultado:

["100", "200", "150", "200", "20"]

  • Utilizando .match():

var codigos = 'A121B12112C12212F12G01';

var exp = /[A-Za-z]\d+/g

var codigosExtraidos = codigos.match(exp);

  • resultado:

["A121", "B12112", "C12212", "F12", "G01"]

  • Utilizando atributo pattern (em input no HTML5):

    • Para que o input aceite somente números:

<!doctype html>

<title>Testando pattern</title>

Observações

Regex Engine desenvolvido e disponibilizado pelo instrutor, não o modifiquei, pois o intuito do curso era aprender a regex e não desenvolver o Regex Engine.

Em caso de sugestão ou alguma alteração, fiquem a vontade para entrar em contato! Toda contribuição é bem-vinda!

Gratidão a ONE, Alura e Instrutor ..

Materiais interessantes:

regex's People

Contributors

vanessamie avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.