C#Regex:Checking for";“a-z”;及;“A-Z”;
我想检查一个字符串是否输入到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 =
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]+$");