Diferencia entre regex y

Estoy usando una expresión regular para progtwigr un validador de entrada para un cuadro de texto donde solo quiero caracteres alfabéticos. Me preguntaba si [Az] y [a-zA-Z] eran equivalentes o si había diferencias en el rendimiento.

Sigo leyendo [a-zA-Z] en mis búsquedas y no menciono [Az] .

Estoy usando String.matches(regex) de java String.matches(regex) .

[Az] coincidirá con los caracteres ASCII en el rango de A a z , mientras que [a-zA-Z] coincidirá con los caracteres ASCII en el rango de A a Z y en el rango de z . A primera vista, esto puede parecer equivalente; sin embargo, si observa esta tabla de caracteres ASCII, verá que Az incluye varios otros caracteres. Específicamente, son [ , \ , ] , ^ , _ y ` (lo que claramente no desea).

El az coincide con ‘a’ a ‘z’ AZ coincide con ‘A’ a ‘Z’ Az coincide con todos estos y con los caracteres entre ‘Z’ y ‘a’ que son [] ^ / _ `

Consulte http://www.asciitable.com/

Eche un vistazo a la tabla ASCII . Verás que hay algunos personajes entre Z y a , por lo que coincidirás más de lo que quisiste.

Cuando eche un vistazo a la tabla ASCII, verá lo siguiente:

 A = 65 Z = 90 a = 97 z = 122 

Por lo tanto, [Az] hará coincidir cada carácter del 65 al 122. Esto también incluye estos caracteres ( 91 -> 97 ):

  [\]^_` 

Esto significa que [A-Za-z] coincidirá solo con el alfabeto, sin los caracteres notados

Los corchetes crean una clase de caracteres y el guión es una forma abreviada de agregar cada carácter entre los dos caracteres proporcionados. es decir, [AF] puede escribirse [ABCDEF] .

La clase de caracteres [Az] coincidirá con cada carácter entre esos caracteres, que en ASCII incluye algunos otros caracteres como ‘[‘, ‘\’ y ‘]’.

Una alternativa para especificar ambos casos sería establecer que la expresión regular no distinga entre mayúsculas y minúsculas, utilizando el modificador /i .

Eche un vistazo al gráfico ASCII (en el que se basan los caracteres Java): hay bastantes caracteres de puntuación situados entre Z y a, a saber:

 [\]^ _`