C # Regex: comprobación de “az” y “AZ”

Quiero comprobar si una cadena ingresada en un carácter entre az o AZ. De alguna manera, mi expresión regular no parece entenderlo. Siempre vuelve verdadero. No estoy seguro de por qué, entiendo que tiene que ver con la forma en que estoy escribiendo mi expresión regular. Cualquier ayuda sería apreciada.

private static bool isValid(String str) { bool valid = false; Regex reg = new Regex((@"a-zA-Z+")); if (reg.Match(str).Success) valid = false; else valid = true; return valid; } 

El camino correcto sería así:

 private static bool isValid(String str) { return Regex.IsMatch(str, @"^[a-zA-Z]+$"); } 

Este código tiene los siguientes beneficios:

  • Usar el método estático en lugar de crear una nueva instancia cada vez: el método estático almacena en caché la expresión regular
  • Se corrigió la expresión regular. Ahora coincide con cualquier cadena que consta de uno o más de los caracteres az o AZ. No se permiten otros personajes
  • Mucho más corto y legible.
 Regex reg = new Regex("^[a-zA-Z]+$"); 
  • ^ inicio de la cadena
  • [] conjunto de caracteres
  • + una vez o más
  • $ final de la cadena

^ y $ necesario porque quiere validar toda la cadena, no parte de la cadena

Utilizar

 Regex.IsMatch(@"^[a-zA-Z]+$");