Teste regex também com o que não deve combinar
Encontrar uma correspondência é um começo, não prova de que o padrão expressa sua intenção. Bons testes incluem textos quase certos que devem ser rejeitados.
Descreva primeiro a regra em palavras
Você procura um código dentro de um parágrafo ou valida a linha inteira? Um fragmento válido em uma entrada inválida pode parecer sucesso sem atender ao requisito.
Use exemplos pequenos de caracteres, tamanho e limites. Um texto longo dificulta entender acertos e falhas; o padrão não aplica regras de negócio que você não escreveu.
Flags e sistemas de escrita alteram o resultado
g solicita várias correspondências; i muda o tratamento de maiúsculas. Em JavaScript, \w não define palavras de todos os sistemas de escrita; propriedades Unicode com u podem ser necessárias.
ToolRoof testa a sintaxe JavaScript e g, i, m, s, u. Posições usam unidades UTF-16, nem sempre símbolos visíveis. Outro motor de regex pode ter comportamento diferente.
Referências: MDN — JavaScript regular expressions, flags and Unicode
Exemplos aprovados não certificam segurança
Inclua um caso sem correspondência e casos nos limites mínimo e máximo pretendidos. Teste várias linhas se isso fizer parte do uso.
O processamento é limitado e aparecem até 200 correspondências; chegar ao limite não significa que acabaram. Não há garantia de velocidade ou segurança para toda entrada, nem execução de código de substituição ou do texto inserido.
Exemplo: 2 códigos aceitos e 2 quase válidos
Em ID-17 ID-204 ID-7 XID-99, o padrão \bID-\d{2,3}\b com g encontra ID-17 e ID-204. ID-7 é curto demais; o limite de palavra impede começar dentro de XID-99.
Sem g, retorna apenas a primeira correspondência. A regra descreve estes códigos de exemplo: não confirma sua existência real, autoriza acesso ou valida outros requisitos do sistema.