Início·Expressões regulares
Publicidade

Garanta seu bônus em uma corretora de cripto

Bônus que você recebe só por se cadastrar. As condições são as que cada corretora anuncia.

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ção36

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

Repetições e grupos24

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

Olhar em volta14

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

Verificar a cadeia inteira66

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^\d{4}-W(?:0[1-9]|[1-4]\d|5[0-3])$um número de semana ISO, até a 53^#(?:[0-9a-f]{4}|[0-9a-f]{8})$uma cor hexadecimal com canal alfa^\d{4}(?:[ -]?\d{4}){3}$um número de cartão em quatro blocos de quatro^[A-Z]{3}$um código de moeda de três letras^0x[0-9a-f]+$um número hexadecimal com o prefixo 0x^[0-9a-f]{64}$um hash de sessenta e quatro caracteres^[0-9a-f]{24}$um identificador de documento de vinte e quatro caracteres^\d{5}$um código postal de cinco dígitos^[A-Z]{2}$um código de país de duas letras^(\d{1,3}\.){3}\d{1,3}/\d{1,2}$um endereço IPv4 com prefixo CIDR^01[016789]-?\d{3,4}-?\d{4}$um número de telemóvel coreano^[가-힣]{2,5}$um nome em hangul de duas a cinco sílabas^\d{5}(-\d{4})?$um código postal dos EUA^([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?::([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?$um endereço IPv6 abreviado^\d{3}-\d{2}-\d{5}$um número de registo comercial coreano^[a-z]+\/[a-zA-Z0-9][a-zA-Z0-9.+-]*$um tipo MIME^data:[a-z]+\/[a-z0-9.+-]+;base64,[A-Za-z0-9+/]+=*$um URI data: em base64^(\S+\s+){4}\S+$uma expressão cron de cinco campos^[A-Za-z]:\\.*$um caminho de unidade do Windows^[\^~]?\d+\.\d+\.\d+$um intervalo semver com ^ ou ~^(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3})$uma faixa IPv4 privada^[A-Z][a-zA-Z0-9]*$um nome em PascalCase

Buscar e limpar49

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

\s+$espaço sobrando no fim^\s+espaço no início^\s+|\s+$espaço nas duas pontas\s{2,}dois ou mais espaços seguidos\n\s*\numa linha vazia entre duas\D+tudo o que não é dígito[^\x00-\x7F]um caractere fora do ASCII[\x00-\x1F]um caractere de controle invisível</?[^>]+>as etiquetas HTML de um texto<!--[\s\S]*?-->um comentário HTML//.*$um comentário que começa com duas barras/\*[\s\S]*?\*/um comentário de várias linhas"[^"\\]*(?:\\.[^"\\]*)*"texto entre aspas duplas'[^'\\]*(?:\\.[^'\\]*)*'texto entre aspas simples\[([^\]]+)\]\(([^)]+)\)um link Markdown^#{1,6}\s+.+$uma linha de título Markdown(?:^|\s)#([a-z0-9_]+)uma hashtag(?:^|\s)@([a-z0-9_]{2,})uma menção com arroba[?&]([^=&]+)=([^&]*)um parâmetro de consulta de uma URLhttps?://[^\s<>"]+uma URL dentro de um texto comum^https?://([^/:?#]+)só o domínio de uma URL\.([a-z0-9]+)$a extensão de um nome de arquivo(?<=[a-z0-9])(?=[A-Z])a junção entre palavras em camelCase_([a-z])a letra que segue um sublinhado-([a-z])a letra que segue um hífen(?:^|,)("(?:[^"]|"")*"|[^,]+)um campo separado por vírgulas^([^=]+)=(.*)$um nome e valor separados por igual^\s*(\S+)a primeira palavra(\S+)\s*$a última palavra\d+grupos de dígitos dentro de um texto\b\w+\bcada palavra, uma a uma\[([^\]]*)\]o que está entre colchetes\(([^)]*)\)o que está entre parênteses[\uD800-\uDBFF][\uDC00-\uDFFF]um emoji que ocupa duas unidades(.)\1{2,}o mesmo caractere três vezes ou mais,\s*([}\]])uma vírgula antes de fechar\*\*([^*]+)\*\*texto em negrito entre dois asteriscos`([^`]+)`código entre crases(\w+)="([^"]*)"um atributo cujo valor vai entre aspas\x1b\[[0-9;]*mum código de escape de cor do terminalfrom ['\"]([^'\"]+)['\"]o caminho de um import#[0-9a-fA-F]{6}\buma cor hexadecimal dentro do textoTODO:?\s*(.*)uma nota TODO num comentário\d+(px|em|rem|%)um número com unidade CSS!\[([^\]]*)\]\(([^)]+)\)uma imagem de Markdown^[-*+]\s+(.+)$um item de lista Markdown--[^\n]*um comentário de linha SQL\$\{?([A-Z_][A-Z0-9_]*)\}?uma variável de ambiente do shell[A-Za-z0-9_-]{11}um id de vídeo do YouTube

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

QO 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.

QPor 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.

QPor 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.

QO 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.

QPosso 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.