Expressão Regular "^[a-zA-Z] " ou "[^a-zA-Z]"
^[a-zA-Z]
e [^a-zA-Z]
?
Quando me registar em C#,
Regex.IsMatch("t", "^[a-zA-Z]") // Returns true (I think it's correct)
Regex.IsMatch("t", "[^a-zA-Z]") // Returns false
Existem muitos sites usando [^a-zA-Z]
para o alfabeto. Não sei bem qual é a resposta correcta.
4 answers
SIM, o primeiro significa "corresponder todas as cadeias de caracteres que começam com uma letra", o segundo significa "corresponder todas as cadeias que contêm uma não-letra". O caret ( " ^ " ) é usado de duas maneiras diferentes, uma para sinalizar o início do texto, a outra para negar uma correspondência de caracteres dentro de parêntesis rectos.
^[a-zA-Z]
significa qualquer A-z ou a-Z no início de uma linha
[^a-zA-Z]
significa qualquer carácter que não seja a-z ou a-Z
Quando o carácter ^
aparece fora de []
corresponde ao início da linha (ou texto). Quando o carácter ^
aparece dentro do []
, corresponde a qualquer carácter que não apareça dentro do []
.
^ fora da classe de caracteres ("[a-zA-Z]") observa que é o operador" começa com".
^ dentro do carácter nega a classe indicada.
Assim, "^[a-zA-Z] "traduz para" começa com o carácter de A-z ou a-Z", e" [^a-zA-Z] "traduz para"não é nem a-z ou a-Z"
Aqui está uma referência rápida: http://www.regular-expressions.info/reference.html