Início·Expressões regulares

133 expressões regulares

Da notação até verificar e-mails, datas e endereços. Cada expressão vem com exemplos que devem casar e outros que não, e os testes realmente os executam.

Notação28

Como apontar para um único caractere. Todo o resto se apoia nisso.

Repetições e grupos17

Quantas vezes algo se repete e o que conta como uma unidade.

Olhar em volta8

Verifica o que está antes ou depois sem consumir. Serve para empilhar condições.

Verificar a cadeia inteira44

Ancorado nas duas pontas: a cadeia inteira precisa casar. É o que a validação usa.

^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$um endereço de e-mail^https?://[^\s/$.?#][^\s]*$um endereço web^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$um nome de domínio^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$um endereço IPv4^(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$um endereço IPv6 escrito por extenso^(?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2}$um endereço MAC^(?:6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]?\d{1,4})$um número de porta^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$um UUID^#(?:[0-9a-f]{3}|[0-9a-f]{6})$um código de cor hexadecimal^rgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)$um valor de cor rgb()^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$uma data em formato ISO^(?:0[1-9]|[12]\d|3[01])/(?:0[1-9]|1[0-2])/\d{4}$uma data escrita com barras^(?:[01]\d|2[0-3]):[0-5]\d$uma hora no formato de 24 horas^(?:0?[1-9]|1[0-2]):[0-5]\d\s?(?:am|pm)$uma hora com am ou pm^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$um carimbo de tempo ISO completo^P(?=\d|T\d)(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$uma duração ISO^\d+\.\d+\.\d+(?:-[0-9a-z.-]+)?(?:\+[0-9a-z.-]+)?$um número de versão semântica^\d+$um inteiro sem sinal^[+-]?\d+$um inteiro que pode ter sinal^-?\d+(?:\.\d+)?$um número que pode ter decimais^-?\d+(?:\.\d+)?[eE][+-]?\d+$um número em notação científica^(?:100(?:\.0+)?|\d{1,2}(?:\.\d+)?)%$uma porcentagem de 0 a 100^\d{1,3}(?:,\d{3})*$um número agrupado com vírgulas^[$€£¥₩]\s?\d{1,3}(?:,\d{3})*(?:\.\d{2})?$um valor com símbolo de moeda^[0-9a-f]+$uma cadeia hexadecimal^[01]+$uma cadeia só de 0 e 1^[0-7]+$uma cadeia octal^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$uma cadeia codificada em base64^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$um JWT dividido por dois pontos^\+[1-9]\d{7,14}$um número de telefone em forma internacional^[a-z][a-z0-9_]{2,15}$um usuário que começa com letra^[a-z0-9]+(?:-[a-z0-9]+)*$um slug de URL^[^\\/:*?"<>|]+\.[a-z0-9]+$um nome de arquivo com extensão^.+\.(?:jpe?g|png|gif|webp|avif|svg)$uma extensão de arquivo de imagem^/(?:[^/\0]+/)*[^/\0]*$um caminho estilo Unix^[A-Za-z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$um caminho do Windows^</?[a-z][a-z0-9]*(?:\s[^<>]*)?/?>$uma etiqueta HTML^\.-?[_a-z][_a-z0-9-]*$um seletor de classe CSS^M{0,3}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})$um numeral romano^-?(?:90(?:\.0+)?|[1-8]?\d(?:\.\d+)?)$um valor de latitude^-?(?:180(?:\.0+)?|1[0-7]\d(?:\.\d+)?|\d{1,2}(?:\.\d+)?)$um valor de longitude^(?:0|[1-9]\d*)$um número sem zero à esquerda^\d*[02468]$um número par^\s*$uma linha em branco

Buscar e limpar36

Para extrair ou apagar só a parte de que você precisa de um texto maior.

Como ler

  • Com ^ e $ em volta, a cadeia inteira precisa casar; sem eles, a correspondência pode estar em qualquer lugar. Ancore sempre o que usar para validar.
  • Os parênteses ( ) capturam o que envolvem. Se você só precisa agrupar, escreva (?: ) para a numeração não se deslocar.
  • Cada expressão aqui é conferida com seus exemplos. Ainda assim, "parece um e-mail" e "é uma caixa real" são coisas diferentes.
  • Repetições abertas aninhadas como (a+)+ podem explodir com certas entradas. Procure esse formato antes de colar uma expressão alheia.

Perguntas frequentes

Q. O que é uma expressão regular?

Uma pequena linguagem para descrever a forma que você procura num texto. Escrever \d{4} em vez de "quatro dígitos" faz o programa achar cada lugar com essa forma. JavaScript, Python, Java e quase todas usam a mesma notação.

Q. Por que a verificação de e-mail é tão curta?

Um padrão que cubra toda a especificação tem milhares de caracteres e mesmo assim não diz se a caixa existe. Pegar erros de digitação é o que a expressão regular consegue; a checagem real é enviar uma mensagem de confirmação.

Q. Por que os padrões mudam entre linguagens?

O núcleo é o mesmo, os detalhes não. JavaScript não tem \A, e Python precisa ligar re.MULTILINE à parte. Tudo aqui foi escrito para rodar como está em JavaScript.

Q. O que significa um padrão poder ser lento?

Quando repetições abertas se aninham, como (a+)+, o número de retrocessos explode com entradas que não casam. Uma cadeia curta pode levar segundos, o que é perigoso num servidor.

Q. Posso confiar nestes padrões?

Cada um é guardado com exemplos que devem casar e outros que não, e os testes rodam os 133 de verdade. Os exemplos que você vê são os mesmos dos testes, então a descrição não pode se afastar do padrão.