Falha no teste do JavaScript RegEx: decodificando o problema
No domínio do JavaScript, um desenvolvedor encontrou um dilema intrigante: seu padrão de expressão regular consistentemente produziu resultados falsos para qualquer entrada. Ao compartilhar seu código com editores on-line, ele funcionou surpreendentemente conforme planejado. Um exame mais detalhado revelou o culpado: tratamento inadequado da barra invertida.
Originalmente, o desenvolvedor definiu a expressão regular como uma string:
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
No entanto, ao construir uma expressão regular a partir de uma string, é crucial duplicar cada caractere de barra invertida. Isso ocorre porque o analisador interpreta a string literal e aplica suas próprias regras para barras invertidas, resultando em uma expressão modificada que difere do padrão pretendido.
Ao omitir a duplicação da barra invertida, o padrão se tornou:
^(0[1-9]|1[0-2])/d{4}$
Em vez disso, as barras invertidas devem ser duplicadas dentro da string:
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
Esta modificação garante que o analisador interprete o padrão corretamente, permitindo que ele reconheça o formato desejado por meses e anos.
Além disso, vale a pena considerar o uso direto da sintaxe de expressão regular:
var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;
Isso elimina a necessidade de interpolação de strings e fornece uma sintaxe mais intuitiva para expressar o padrão.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3