W3docs

Âncoras ^ e $ em Expressões Regulares JavaScript

Âncoras são caracteres especiais em expressões regulares que permitem corresponder posições dentro de uma string. As duas âncoras principais são ^ e $.

Introdução às Âncoras em JavaScript

Âncoras são caracteres especiais em expressões regulares que permitem corresponder posições dentro de uma string em vez de caracteres reais. As duas âncoras principais em JavaScript são ^ (circunflexo) e $ (cifrão). A âncora ^ afirma que a correspondência deve começar no início da string, enquanto a âncora $ afirma que a correspondência deve ocorrer no final da string.

Uma ideia fundamental a compreender primeiro: âncoras têm largura zero. Elas correspondem a uma posição entre caracteres, não a um caractere em si, portanto nunca consomem nenhum texto. É por isso que /^abc$/ corresponde à string de três caracteres "abc" e não a uma de quatro ou cinco caracteres — o ^ e o $ não adicionam comprimento à correspondência. Essa mesma propriedade permite usar uma âncora em replace para inserir texto bem no início ou no final de uma string sem remover nada:

javascript— editable

Esta página aborda como corresponder ao início e ao fim de uma string, como combinar ambas as âncoras para correspondência exata de strings completas, como a flag m (multiline) altera seu comportamento, e como as âncoras funcionam com test() e match().

A Âncora ^: Correspondendo ao Início de uma String

A âncora ^ é usada para verificar se uma string começa com um padrão específico.

Usando a Âncora ^

javascript— editable

Neste exemplo, ^Hello garante que a string começa com "Hello". A string 'Hello, world!' corresponde ao padrão, mas 'Say Hello, world!' não corresponde porque "Hello" não está no início.

Exemplo Prático: Validando o Início de um Endereço de E-mail

javascript— editable

Esta expressão regular verifica se um endereço de e-mail começa com um nome de usuário válido. A string '[email protected]' corresponde, e '[email protected]' também corresponde porque ambas começam com um padrão de nome de usuário válido antes do símbolo @.

A Âncora $: Correspondendo ao Fim de uma String

A âncora $ é usada para verificar se uma string termina com um padrão específico.

Usando a Âncora $

javascript— editable

Neste exemplo, world!$ garante que a string termina com "world!". A string 'Hello, world!' corresponde ao padrão, mas 'Hello, world' não corresponde porque não possui o ponto de exclamação no final.

Exemplo Prático: Validando uma Extensão de Arquivo

javascript— editable

Esta expressão regular verifica se um nome de arquivo termina com ".txt". A string 'document.txt' corresponde, enquanto 'document.pdf' não corresponde.

Informação

As âncoras (^ e $) em expressões regulares JavaScript permitem corresponder com precisão ao início ou ao fim de uma string, garantindo validação e manipulação de texto precisas.

Combinando ^ e $ para Correspondências Exatas

Ao combinar ^ e $, você pode criar uma expressão regular que corresponde a uma string exatamente, do início ao fim.

Usando Ambas as Âncoras

javascript— editable

Neste exemplo, ^Hello, world!$ garante que a string inteira corresponda a "Hello, world!". Apenas a string 'Hello, world!' corresponde exatamente.

Exemplo Prático: Validando um Padrão Exato

javascript— editable

Esta expressão regular garante que o endereço de e-mail esteja em um formato válido do início ao fim. Ela verifica a presença de um nome de usuário válido, um símbolo "@", um nome de domínio e um domínio de nível superior.

Usando Âncoras para Validação Precisa

As âncoras são particularmente úteis para validar entradas onde você precisa garantir que a string inteira esteja em conformidade com um padrão. Por exemplo, use ^ e $ para validar números de telefone, códigos postais ou qualquer entrada de formato fixo.

Exemplo: Validando um Número de Telefone dos EUA

javascript— editable

Esta expressão regular garante que o número de telefone esteja no formato (123) 456-7890. Ela usa ^ para afirmar o início e $ para afirmar o fim, garantindo que a string inteira corresponda ao padrão especificado.

Âncoras e a Flag Multiline (m)

Por padrão, ^ e $ correspondem apenas ao início e ao fim absolutos da string inteira, mesmo quando ela contém quebras de linha. Ao adicionar a flag m (multiline), o significado muda: ^ e $ passam a corresponder também ao início e ao fim de cada linha.

javascript— editable

Sem m, /^.+$/g retorna null porque . não corresponde aos caracteres de nova linha, portanto nenhuma linha única abrange a string inteira do seu início ao seu fim. Com m, cada linha é correspondida de forma independente. Se você estiver trabalhando com entrada multiline, a flag m é quase sempre o que você deseja — consulte Modo multiline de âncoras, flag "m" para uma análise mais aprofundada.

Âncoras com test() e match()

As âncoras se comportam da mesma forma independentemente do método chamado; a diferença está no que cada método retorna.

  • regexp.test(str) retorna um boolean — ideal para validação ("esta string começa/termina da forma correta?").
  • str.match(regexp) retorna o texto correspondido (ou um array com a flag g), ou null quando não há correspondência — útil quando você também precisa do valor capturado.
javascript— editable

Como \d+$ está ancorado ao fim, ele captura o número final 42 e nada mais. Quando você precisa apenas de uma resposta sim/não, prefira test(); use match() quando precisar obter o valor de volta.

Informação

Se você quiser corresponder a um caractere específico em um limite entre um caractere de palavra e um caractere não-palavra, em vez da borda da string, use o \b de limite de palavra em vez de ^ ou $.

Conclusão

As âncoras são ferramentas poderosas em expressões regulares JavaScript que permitem corresponder a posições dentro de uma string. Ao dominar as âncoras ^ e $, você pode criar padrões precisos e eficazes para validar e manipular strings. Seja para garantir que uma string comece ou termine com um padrão específico, ou para corresponder a uma string inteira exatamente, as âncoras são essenciais para operações de expressão regular robustas.

Prática

Prática
O que é verdadeiro sobre o uso do circunflexo (^) e do cifrão ($) em JavaScript?
O que é verdadeiro sobre o uso do circunflexo (^) e do cifrão ($) em JavaScript?
Was this page helpful?