C#Regex:检查“az”和“AZ”

我想检查是否在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; } 

正确的方式是这样的:

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

此代码具有以下优点:

  • 使用静态方法而不是每次都创建一个新实例:静态方法缓存正则表达式
  • 修正了正则表达式。 它现在匹配由一个或多个字符az或AZ组成的任何字符串。 不允许其他字符。
  • 更短更可读。
 Regex reg = new Regex("^[a-zA-Z]+$"); 
  • ^字符串的开头
  • []字符集
  • \+一次或更多
  • $字符串的结尾

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

使用

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