Expressão Regular "^[a-zA-Z] " ou "[^a-zA-Z]"

Há alguma diferença entre ^[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.

Author: Win, 2010-05-07

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.

 55
Author: tloflin, 2010-05-07 18:31:52

^[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

 9
Author: Mitch Dempsey, 2010-05-07 18:32:19
Há uma diferença.

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 [].

 5
Author: user335719, 2010-05-07 18:32:06

^ 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
 3
Author: The Moof, 2010-05-07 18:35:38