简体   繁体   中英

C# Regex: Checking for “a-z” and “A-Z”

I want to check if a string inputted in a character between az or AZ. Somehow my regular expression doesn't seem to pick it up. It always returns true. I am not sure why, I gather it has to do with how I am writing my regular expression. Any help would be appreciated.

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;
}
Regex reg = new Regex("^[a-zA-Z]+$");
  • ^ start of the string
  • [] character set
  • \\+ one time or the more
  • $ end of the string

^ and $ needed because you want validate all string, not part of the string

The right way would be like so:

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

This code has the following benefits:

  • Using the static method instead of creating a new instance every time: The static method caches the regular expression
  • Fixed the regex. It now matches any string that consists of one or more of the characters az or AZ. No other characters are allowed.
  • Much shorter and readable.

使用

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM