Tentei isso em muitas línguas com o mesmo resultado.
Exemplo JavaScript:
/[Az]/.test("_"); // => true /[Az]/.test("0"); // => false /[Az]/.test("-"); // => false /[Az]/.test("A"); // => true
Por que o primeiro caso não é false
?
Os intervalos de caracteres não são tão inteligentes. Eles são baseados em códigos ascii. Confira a tabela Ascii . Existem caracteres especiais entre o AZ
maiúsculo e o minúscula do intervalo az
, a saber:
[ \ ] ^ _ `
Então, ao invés de Az
, deveria ser A-Za-z
.