C#Regex:检查"az"和"AZ"

Sop*_*Ker 17 c# regex

我想检查是否在az或AZ之间的字符中输入了一个字符串.不知怎的,我的正则表达似乎没有把它拿起来.它总是返回true.我不确定为什么,我收集它与我如何编写正则表达式有关.任何帮助,将不胜感激.

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;
}
Run Code Online (Sandbox Code Playgroud)

Vik*_*iaR 21

Regex reg = new Regex("^[a-zA-Z]+$");
Run Code Online (Sandbox Code Playgroud)
  • ^ 字符串的开头
  • [] 字符集
  • \+ 一次或多次
  • $ 字符串的结尾

^并且$需要因为你想要验证所有字符串,而不是字符串的一部分

  • +1用于解释所使用的字符 (3认同)

Dan*_*rth 19

正确的方法是这样的:

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

此代码具有以下好处:

  • 使用静态方法而不是每次都创建一个新实例:静态方法缓存正则表达式
  • 修正了正则表达式.它现在匹配由一个或多个字符az或AZ组成的任何字符串.不允许其他字符.
  • 更短更可读.


mat*_*ieu 6

使用

Regex.IsMatch(@"^[a-zA-Z]+$");
Run Code Online (Sandbox Code Playgroud)