Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Expressões regulares, popularmente conhecidas como "regex" ou "regexp", são strings que descrevem um padrão de pesquisa. Você pode usar expressões regulares para verificar se uma string contém um padrão específico, extrair informações de uma string e substituir partes de uma string por um novo texto.

Aprenda a sintaxe básica das expressões regulares e como usá-las em JavaScript.

A sintaxe básica das expressões regulares

Existem duas maneiras de criar uma expressão regular em JavaScript: usando uma expressão regular literal e usando o RegExp construtor.

Um literal de expressão regular consiste em um padrão entre barras, seguido por um sinalizador opcional.

Por exemplo:

// Sem sinalizador
const expressãoregex_1 = /pattern/

// Com sinalizador
const expressãoregex_2 = /pattern/bandeira

Um sinalizador é um parâmetro opcional que você pode adicionar a uma expressão regular para modificar seu comportamento. Por exemplo:

instagram viewer
const regexFlag = /the/g;

O g sinalizador indica que a expressão deve corresponder a todas as ocorrências, não apenas à primeira.

Você também pode criar uma expressão regular usando o RegExp construtor. Por exemplo:

const expressãoregex = novoRegExp("Padrão", "g");

O RegExp O construtor recebe dois parâmetros: um padrão - uma string ou uma expressão regular literal - e um sinalizador (s).

Existem dois sinalizadores bastante comuns que você usará com expressões regulares em JavaScript:

  • g: O sinalizador global faz com que a expressão regular corresponda a todas as ocorrências do padrão na string especificada, em vez de uma única ocorrência.
  • eu: o sinalizador que não diferencia maiúsculas de minúsculas faz com que a expressão regular desconsidere as maiúsculas e minúsculas do padrão e corresponda aos caracteres maiúsculos e minúsculos na string fornecida.

Você pode usar sinalizadores juntos em uma única expressão em qualquer ordem. Por exemplo:

const expressãoregex = novoRegExp("Padrão", "gi");

Esta expressão corresponderá a todas as ocorrências de “Padrão”, independente do caso.

Em expressões regulares, certos caracteres, conhecidos como metacaracteres, possuem significados especiais. Você pode usá-los para combinar tipos específicos de caracteres ou padrões.

Aqui estão alguns dos metacaracteres mais usados ​​e seus significados:

  • O caractere curinga (.): Este caractere corresponde a qualquer caractere único, exceto para uma nova linha. É uma ferramenta útil para combinar padrões com caracteres desconhecidos.
  • A Estrela Kleene (*): Este caractere corresponde a zero ou mais ocorrências do caractere ou grupo anterior. Ele permite que o caractere ou grupo precedente apareça quantas vezes quiser na string, incluindo zero.
  • O caractere opcional (?): Este caractere corresponde a zero ou uma ocorrência de um caractere ou grupo anterior.
  • Início da âncora de linha (^): Este caractere corresponde apenas ao início de uma linha ou string.
  • Âncora de fim de linha ($): Este caractere corresponde ao final de uma linha ou string.
  • Conjunto de caracteres/classe ([]): Um conjunto de caracteres corresponde a qualquer caractere de um conjunto de caracteres em uma string. Você os define usando colchetes [] e você pode especificar um conjunto de caracteres fixos, caracteres especiais ou determinados grupos de caracteres.
  • Caractere de alternância (|): Este caractere corresponde ao caractere ou grupo anterior ou seguinte. Funciona de forma semelhante ao OR Operador JavaScript.
  • Caractere de agrupamento (()): O caractere de agrupamento permite agrupar caracteres ou subexpressões, aplicar operadores a eles como uma unidade e controlar a ordem das operações.

Testando uma string em uma expressão regular em JavaScript

Em JavaScript, você pode testar uma string em uma expressão regular usando vários métodos.

Esta seção pressupõe que você tenha um conhecimento básico de expressões regulares e padrões. Se você não se sentir à vontade com expressões regulares, confira um guia para iniciantes sobre expressões regulares primeiro.

O método de teste

O .teste() O método retorna um booleano indicando se a expressão regular corresponde à string ou não. Este método usa uma string para realizar a pesquisa como um argumento. É particularmente útil para verificações simples.

Por exemplo:

deixar regex = /.com$/;
deixar str = "exemplo.com";
console.log (regex.test (str)); // verdadeiro

Esta expressão regular corresponde a uma string que termina com ".com".

O método executivo

O .exec() método retorna uma matriz contendo o texto correspondente e quaisquer grupos capturados ou nulo se não encontrar uma correspondência. Este método usa uma string para realizar a pesquisa como um argumento. É útil para expressões regulares mais complexas.

Por exemplo:

deixar regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
deixar str = "123-456-7890";
deixar resultado = regex.exec (str);

se (resultado !== nulo) {
console.registro(`${resultado[0]} é um número de telefone válido`);
} outro {
console.registro("Número de telefone inválido");
}

A expressão regular acima corresponde a uma string que começa com um opcional "(", três dígitos e um opcional ")". Em seguida, ele procura um opcional "-", ".", ou espaço, seguido de três dígitos. Ele finalmente procura um opcional "-", ".", ou espaço seguido de quatro dígitos no final da string.

Esta expressão regular corresponde a números de telefone no formato de “(xxx) xxx-xxxx”, “xxx-xxx-xxxx”, “xxx.xxx.xxxx” ou “xxx xxx xxxx”.

Se encontrar uma correspondência, .exec() retorna uma matriz contendo o texto correspondente e quaisquer grupos capturados (definidos por parênteses). Ele incluirá cada grupo como um elemento adicional na matriz que ele retorna. Isso permite que você acesse partes específicas do texto correspondente, o que pode ajudá-lo a extrair informações de uma string.

O método de substituição

O .substituir() O método procura uma correspondência entre uma expressão regular e uma string e substitui o texto correspondente por um texto de substituição especificado. Este é um método de objetos de string e usa uma expressão regular e uma string de substituição como argumentos.

Por exemplo:

deixar string = "A rápida raposa marrom pula sobre o cachorro preguiçoso.";
deixar expressão = /The/gi;
deixar newString = string.replace (expressão, "a");
console.log (novaString); // "uma rápida raposa marrom pula sobre um cachorro preguiçoso."

Este exemplo chama o substituir() método no corda variável, passando a expressão regular, expressão. A expressão regular corresponderá a todas as ocorrências de “The” na string, independentemente do caso. A chamada ao método replace o instrui a substituir cada ocorrência pela string “a”.

Considerações de desempenho ao usar expressões regulares

Embora as expressões regulares ajudem a combinar e manipular strings, elas também podem ser caras em termos de desempenho. Tornar os padrões o mais específicos possível e mantê-los simples é vital para mantê-los com bom desempenho.