C#Regex:检查“a-z”和“A-Z”

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

我想检查在a-z或a-z之间的字符中输入的字符串。不知何故,我的正则表达式似乎没有接收到它。它总是返回真。我不知道为什么,我认为这与我如何编写正则表达式有关。任何帮助都将不胜感激。

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}


1
Regex reg = new Regex("^[a-zA-Z]+$");
    百万千克1^字符串的开头百万千克1百万千克1[]字符集百万千克1百万千克1一次或多次百万千克1百万千克1$串尾百万千克1

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


正确的方法是这样的:

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

此代码具有以下优点:

    百万千克1每次使用静态方法而不是创建新实例:静态方法缓存正则表达式百万千克1百万千克1修复了regex。它现在匹配由一个或多个字符a-z或a-z组成的任何字符串。不允许使用其他字符。百万千克1百万千克1短得多,可读性强。百万千克1


使用

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