Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Regex:Checking for";“a-z”;及;“A-Z”;_C#_Regex - Fatal编程技术网

C#Regex:Checking for";“a-z”;及;“A-Z”;

C#Regex:Checking for";“a-z”;及;“A-Z”;,c#,regex,C#,Regex,我想检查一个字符串是否输入到a-z或a-z之间的字符中。不知怎么的,我的正则表达式似乎无法识别它。它总是返回真的。我不知道为什么,我想这与我如何编写正则表达式有关。任何帮助都将不胜感激 private static bool isValid(String str) { bool valid = false; Regex reg = new Regex((@"a-zA-Z+")); if (reg.Match(str).Success) valid =

我想检查一个字符串是否输入到a-z或a-z之间的字符中。不知怎么的,我的正则表达式似乎无法识别它。它总是返回真的。我不知道为什么,我想这与我如何编写正则表达式有关。任何帮助都将不胜感激

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]+$");
}
此代码具有以下优点:

  • 使用静态方法而不是每次都创建一个新实例:静态方法缓存正则表达式
  • 修正了正则表达式。它现在匹配由一个或多个字符a-z或a-z组成的任何字符串。不允许使用其他字符
  • 要短得多,可读性强得多
  • ^
    字符串的开头
  • []
    字符集
  • \+
    一次或多次
  • $
    字符串的结尾

^
$
需要,因为您希望验证所有字符串,不属于字符串的一部分

在匹配后您将其设置为false。提示:您可以使用
?i
使正则表达式模式不区分大小写,然后在需要时只写入
A-Z
。由于锚定“^和$,^[A-zA-Z]+$将匹配完全由字母组成的字符串(可能是OT的意图,但您应该更新解释)。
private static bool isValid(String str)
{
    return Regex.IsMatch(str, @"^[a-zA-Z]+$");
}
Regex reg = new Regex("^[a-zA-Z]+$");