La différence entre l'expression régulière [A-z] et [a-zA-Z]
Je suis aide d'une expression régulière pour la programmation d'un programme de validation d'entrée pour une zone de texte où je veux seulement les caractères alphabétiques. Je me demandais si [A-z]
et [a-zA-Z]
ont été ou l'équivalent, ou si il y avait des différences de performance sage.
Je lis [a-zA-Z]
sur mes recherches, et aucune mention de [A-z]
.
Je suis à l'aide de java String.matches(regex)
.
Vous devez vous connecter pour publier un commentaire.
[A-z]
va correspondre à des caractères ASCII dans la gamme deA
àz
, tandis que[a-zA-Z]
va correspondre à des caractères ASCII dans la gamme deA
àZ
et dans la gamme dea
àz
. À première vue, cela peut sembler équivalent -- cependant, si vous regardez ce tableau de caractères ASCII, vous verrez queA-z
comprend plusieurs autres personnages. Plus précisément, ils sont[
,\
,]
,^
,_
, et`
(qui, de toute évidence, vous ne voulez pas).[\\]^-`
entreZ
eta
A à z matchs de 'a' à 'z' A-Z matchs de 'A' à 'Z' A-z correspond à tous les caractères entre 'Z' et de 'a' qui sont [ ] ^ /_ `
Reportez-vous à http://www.asciitable.com/
Prendre un coup d'oeil à Table ASCII. Vous verrez que il y a certains caractères entre
Z
eta
, de sorte que vous correspondra plus que vous le destiné à.Lorsque vous prenez un coup d'oeil à la table ASCII, vous verrez suivantes:
Donc,
[A-z]
va correspondre à tous les caractères de 65 à 122. Cela inclut ces caractères (91 -> 96
) ainsi:Cela signifie
[A-Za-z]
correspond seulement l'alphabet, sans les caractères ci-dessus.Les crochets de créer une classe de caractères et le trait d'union est une abréviation pour l'ajout de chaque personnage entre les deux personnages. c'est à dire
[A-F]
peut être écrit[ABCDEF]
.La classe de caractères
[A-z]
va correspondre à chaque caractère entre ces personnages, qui en ASCII comprend certains autres caractères comme '[', '\' et ']'.Une alternative à la spécification les deux cas, il s'agirait de définir l'expression régulière pour être sensible à la casse, à l'aide de la
/i
modificateur.Prendre un coup d'oeil à la ASCII (Java personnages sont basées sur): il y a quelques caractères de ponctuation, situé entre Z et a, à savoir ces: