W3docs

Flag m do Regex JavaScript (Multilinha)

A flag m em expressões regulares JavaScript faz com que ^ e $ correspondam ao início e fim de cada linha em uma string multilinha.

Introdução ao Modo Multilinha

A flag m em JavaScript expressões regulares permite que as âncoras ^ e $ correspondam ao início e ao fim de cada linha dentro de uma string multilinha, em vez de apenas ao início e ao fim de toda a string. Isso é especialmente útil ao trabalhar com texto multilinha onde você precisa realizar correspondência de padrões linha por linha.

Esta página aborda o que a flag m muda, como ela difere do comportamento padrão das âncoras, como ela se combina com as flags g e i, e padrões práticos para analisar texto orientado a linhas, como logs.

Comportamento Padrão vs. Modo Multilinha

Por padrão (sem m), ^ corresponde apenas ao início absoluto da string inteira e $ apenas ao fim absoluto. Uma quebra de linha (\n) dentro da string é apenas um caractere comum — ela não cria novas posições de âncora.

Com a flag m, ^ também corresponde à posição imediatamente após cada \n, e $ também corresponde à posição imediatamente antes de cada \n (bem como ao início/fim real da string). A correspondência em si nunca inclui o caractere de nova linha — as âncoras são posições de largura zero.

javascript— editable

Sem m, apenas o abc no início absoluto da string é ancorado por ^. Ao adicionar m, ^ também corresponde após a quebra de linha, portanto ambas as linhas com abc são encontradas. (A flag g é o que coleta todas as correspondências em vez de parar na primeira.)

A Flag m: Ativando o Modo Multilinha

Quando você usa a flag m, as âncoras ^ e $ correspondem às posições antes e depois das quebras de linha dentro da string.

Usando a Flag m

javascript— editable

Neste exemplo, o regex ^abc corresponde ao início de cada linha que começa com "abc" devido à flag m. A flag g garante que todas as ocorrências sejam encontradas. Sem a flag m, ela corresponderia apenas a "abc" no início absoluto da string.

Exemplo: Correspondendo Múltiplas Linhas

javascript— editable

Aqui, o regex ^start corresponde ao início das linhas que começam com "start" devido à combinação das flags m e g.

Aplicações Práticas

Correspondendo Linhas em Texto Multilinha

A flag m é especialmente útil para corresponder padrões específicos no início ou no fim de cada linha em uma string multilinha.

javascript— editable

Este exemplo mostra como ^hello com a flag m corresponde a "hello" no início de cada linha.

Correspondendo ao Fim de Linhas em Texto Multilinha

Da mesma forma, você pode usar a flag m para corresponder padrões ao fim de cada linha.

javascript— editable

Aqui, world$ com a flag m corresponde a "world" ao fim de cada linha.

Exemplo: Extraindo Linhas Específicas

javascript— editable

Este exemplo demonstra como extrair todas as linhas que começam com "Error:" de um arquivo de log usando a flag m.

Combinando Flags

Você pode combinar a flag m com outras flags para aprimorar suas expressões regulares. Por exemplo, combinar a flag m com a flag i (insensível a maiúsculas/minúsculas) permite realizar correspondências multilinha sem distinção de maiúsculas.

Exemplo: Correspondência Multilinha Sem Distinção de Maiúsculas

javascript— editable

Neste exemplo, o regex corresponde a linhas que contêm "hello" independentemente de maiúsculas, devido à combinação das flags m e i.

  • O padrão de regex ^.*hello.*$ corresponde a qualquer linha que contenha "hello" sem distinção de maiúsculas.
  • A flag m garante que cada linha na string multilinha seja tratada individualmente.
  • Hello world, hello world e HELLO WORLD correspondem ao padrão porque contêm "hello" (sem distinção de maiúsculas) em algum lugar da linha.
Informação

Use a flag m no regex JavaScript para aplicar as âncoras ^ e $ a cada linha em uma string multilinha, aprimorando sua capacidade de validar e manipular conteúdo linha por linha.

Use a Flag m para Validação Linha por Linha

A flag m é ideal para cenários em que você precisa validar ou manipular cada linha individualmente dentro de uma string multilinha.

Exemplo: Validando um Número de Telefone dos EUA

javascript— editable

Este regex garante que o número de telefone esteja no formato (123) 456-7890. Ele usa ^ para indicar o início e $ para indicar o fim, garantindo que a string inteira corresponda ao padrão especificado para cada linha.

Portanto, tanto "(123) 456-7890" quanto "(234) 567-8901" correspondem ao padrão de regex porque seguem o formato (xxx) xxx-xxxx, que o regex foi projetado para corresponder.

Armadilhas Comuns

  • m afeta apenas ^ e $, não . — O ponto ainda não corresponde a uma nova linha. Se você precisar que . também cruze quebras de linha, use a flag s (dotAll) separada. A flag m muda onde as linhas começam e terminam; a flag s muda o que . corresponde.
  • m não é o mesmo que corresponder a palavras inteiras. Para corresponder nas bordas de uma palavra em vez de uma linha, use a fronteira de palavra \b em vez de ^/$.
  • Sem g, match() retorna apenas a primeira ocorrência. A flag m habilita posições de âncora extras, mas você ainda precisa de g para coletar cada linha. Combine-as como gm.
javascript— editable

Conclusão

A flag m em expressões regulares JavaScript estende a funcionalidade das âncoras ^ e $ para corresponder ao início e ao fim de cada linha em uma string multilinha. Essa capacidade é inestimável para o processamento de dados de texto multilinha, permitindo uma correspondência e validação precisas de padrões linha por linha.

Prática

Prática
Qual é a função da flag 'm' em expressões regulares JavaScript?
Qual é a função da flag 'm' em expressões regulares JavaScript?
Was this page helpful?