Carregando...

Expressões regulares

Um padrão corrido contra texto é uma expressão regular. /tea/ pergunta se tea aparece. replace devolve uma cadeia nova e põe mint nesse sítio. Nesta página note é Order: tea, e a linha lê-se true / Order: mint.

O mapa guardava, esta página procura

A página do mapa fechou em lida / mint / 2. Isso era armazenamento. Aqui não se guarda um convidado. Procura-se dentro de uma cadeia. Uma procura falhada devolve false ou null e não lança um erro.

O padrão já está lá dentro

Como o padrão está dentro de mint tea, /tea/.test("mint tea") dá true. lemon não o tem, por isso /tea/.test("lemon") dá false. A bandeira i ignora maiúsculas e minúsculas, logo /tea/i casa com Tea.

O texto traz tea

javascript
console.log(/tea/.test("mint tea"));
console.log(/tea/.test("lemon"));

O registo mostra true e depois false. Um ponto corresponde a um só caráter que não seja quebra de linha, por isso /t.a/ também casa com tea. Um ponto a sério escreve-se com barra invertida e ponto: .

Pedir a cadeia inteira

^ é o início e $ é o fim. /^tea$/ aceita tea e recusa mint tea. Sem essas marcas, /tea/ ainda acerta quando tea vai no meio de uma nota mais longa.

O pedido de uma ponta à outra

javascript
console.log(/^tea$/.test("tea"));
console.log(/^tea$/.test("mint tea"));

O registo é true e depois false. mint tea traz as letras, mas não é só tea.

Cada cópia, depois uma cadeia nova

Com a bandeira g, match devolve cada cópia. replace com g troca cada cópia e devolve uma cadeia nova. note original fica até atribuires o resultado.

As duas cópias e a troca

javascript
const note = "tea and tea";
console.log(note.match(/tea/g));
console.log(note.replace(/tea/g, "mint"));
console.log(note);

O registo de match é um array de duas cadeias tea. O de replace é mint and mint. O terceiro continua tea and tea, porque replace não editou note. Sem g só muda o primeiro tea. Se nada casar, match devolve null, não um array vazio.

A forma da resposta escolhe o método

Escolhe o método pela forma da resposta que queres.

📊 O que cada método devolve

Método Forma da resposta Nesta nota
/tea/.test(note) true ou false true para Order: tea
note.match(/tea/) um array de um acerto, ou null a palavra tea e o lugar
note.match(/tea/g) cada cópia, ou null duas cópias em tea and tea
note.replace(/tea/, "mint") uma cadeia nova Order: mint

test é sim ou não. match entrega os pedaços. replace entrega o texto reescrito. Atribui esse texto se o quiseres guardar.

A página escreve os dois resultados

A página testa Order: tea, troca a bebida e escreve os dois resultados.

A linha feita por test e replace

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const note = "Order: tea";
const found = /tea/.test(note);
const next = note.replace(/tea/, "mint");
document.querySelector("#line").textContent = found + " / " + next;
</script>
</body>
</html>

A linha lê-se true / Order: mint. O próprio note continua Order: tea. lida / mint / 2 era a página do mapa.

Cinco passos curtos

  1. Testa mint tea com /tea/. O resultado é true.
  2. Testa lemon com /tea/. O resultado é false.
  3. Testa mint tea com /^tea$/. O resultado é false.
  4. Casa tea and tea com /tea/g. O comprimento do array é 2.
  5. Lê a página. A linha é true / Order: mint.

Enganos e o que fica

Sem ^ e sem $ um padrão casa com um pedaço, não com a nota inteira. replace não edita o original.

  • Não leias null.length quando match não encontrou nada
  • Não esperes que replace mude note no lugar
  • Não ponhas g numa expressão que reutilizes com test, porque ela lembra onde parou
  • Escreve um ponto a sério como barra invertida e ponto
  • Não leias a linha como lida / mint / 2

Fica com isto

  • test responde true ou false
  • /^tea$/ aceita só a cadeia inteira tea
  • match com g lista cada cópia ou devolve null
  • replace devolve uma cadeia nova
  • a linha da página é true / Order: mint

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo