J'utilise une expression régulière pour programmer un validateur d'entrée pour une zone de texte dans laquelle je ne veux que des caractères alphabétiques. Je me demandais si [A-z]
et [a-zA-Z]
étaient équivalents ou s'il y avait des différences de performances.
Je continue à lire [a-zA-Z]
dans mes recherches et aucune mention de [A-z]
.
J'utilise la String.matches(regex)
de Java.
[A-z]
correspondra à ASCII caractères dans la plage allant de A
à z
, alors que [a-zA-Z]
correspondra à ASCII caractères dans la plage de A
à Z
et dans la plage de a
à z
. À première vue, cela peut sembler équivalent. Toutefois, si vous regardez ce tableau de ASCII caractères, vous verrez que A-z
comprend plusieurs autres caractères. Plus précisément, ils sont [
, \
, ]
, ^
, _
et `
(ce que vous ne voulez manifestement pas).
Les matchs a-z 'a' à 'z' A-Z correspondent aux noms 'A' à 'Z' A-z correspond à tous ceux-ci ainsi qu'aux personnages situés entre 'Z' et 'a' qui sont [] ^/_
Reportez-vous à http://www.asciitable.com/
Examinez le tableau ASCII . Vous verrez qu'il y a des caractères entre Z
et a
, de sorte que vous ferez correspondre plus que prévu.
Lorsque vous consultez la table ASCII, vous verrez ce qui suit:
A = 65
Z = 90
a = 97
z = 122
Donc, [A-z]
correspondra à chaque caractère de 65 à 122. Ceci inclut également ces caractères (91 -> 97
):
[\]^_`
Cela signifie que [A-Za-z]
ne correspond qu'à l'alphabet, sans les caractères remarqués
Les crochets créent une classe de caractères et le trait d'union est un raccourci pour ajouter chaque caractère entre les deux caractères fournis. i.e. [A-F]
peut être écrit [ABCDEF]
.
La classe de caractères [A-z]
fera correspondre chaque caractère entre ces caractères, ce qui dans ASCII inclut d'autres caractères tels que '[', '\' et ']'.
Une alternative à la spécification des deux cas serait de définir l'expression régulière comme étant insensible à la casse, en utilisant le modificateur /i
.
Regardez le tableau ASCII (sur lequel sont basés les caractères Java): il existe de nombreux caractères de ponctuation situés entre Z et a, à savoir:
[\]^ _`
[a-zA-Z]
e.g User Can Enter any small small-character from a to z OR A to Z Any UPPERCase
Character
[AZ] Correspond au caractère dans une plage "A" à "z" (code de caractère 65 à 122)
Un caractère est une lettre, un chiffre, un espace, un signe de ponctuation ou un symbole pouvant être saisi sur un ordinateur. Le mot "ordinateur", par exemple, est composé de huit caractères.
N'importe lequel des chiffres de 0 à 9
Voici une lettre: A
L'alphabet est une combinaison de lettresVoici un alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Je vous recommande fortement de faire défiler cette page si vous venez juste de commencer
https://en.wikipedia.org/wiki/Regular_expression
Pratique ici
Si vous recherchez une expression rationnelle Java
https://docs.Oracle.com/javase/7/docs/api/Java/util/regex/Pattern.html