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]+$");