Qual a diferença entre `^` e `$` numa regex?
`^` marca o início do texto (ou de cada linha, com a flag `m`) e `$` marca o fim; nenhum dos dois consome um caractere, então uma âncora sozinha nunca aparece no texto casado, ela só restringe onde o resto do padrão pode começar ou terminar.
O que a flag `g` muda no resultado de uma regex?
Sem `g`, o teste para no primeiro casamento encontrado no texto; com `g`, ele continua a busca depois de cada casamento e retorna todas as ocorrências, o que é obrigatório para extrair, por exemplo, todo número de um texto em vez de só o primeiro.
Por que uma regex pode travar o navegador?
Um padrão com grupos aninhados e quantificadores sobrepostos (como `(a+)+b` contra um texto sem `b`) pode gerar backtracking catastrófico, onde o motor tenta um número de combinações que cresce exponencialmente com o tamanho do texto; por isso um testador de regex limita o número de casamentos retornados, para não travar a aba num padrão patológico.
Como validar um UUID com regex sem aceitar qualquer string com hífen?
Restrinja o nibble de versão a `[1-5]` na posição certa (logo após o segundo hífen) e o nibble de variante a `[89ab]` (logo após o terceiro), conforme a RFC 4122; sem essas 2 classes específicas, o padrão aceita qualquer sequência hexadecimal no formato certo, mesmo sem ser um UUID real.