C # Regex: verifica di “az” e “AZ”

Voglio verificare se una stringa immessa in un carattere tra az o AZ. In qualche modo la mia espressione regolare non sembra raccoglierlo. Ritorna sempre vero. Non sono sicuro del perché, penso che abbia a che fare con il modo in cui sto scrivendo la mia espressione regolare. Qualsiasi aiuto sarebbe apprezzato.

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; } 

La strada giusta sarebbe così:

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

Questo codice ha i seguenti vantaggi:

  • Utilizzare il metodo statico invece di creare ogni volta una nuova istanza: il metodo statico memorizza nella cache l’espressione regolare
  • Risolto il problema con la regex. Ora corrisponde a qualsiasi stringa costituita da uno o più caratteri az o AZ. Non sono ammessi altri personaggi
  • Molto più breve e leggibile.
 Regex reg = new Regex("^[a-zA-Z]+$"); 
  • ^ inizio della stringa
  • [] set di caratteri
  • + una volta o più
  • $ fine della stringa

^ e $ necessari perché vuoi convalidare tutta la stringa, non parte della stringa

Uso

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