2

这是一个超级基本的问题(我今天脑死了):

如何使用正则表达式验证输入,以查看:1)输入是否为某种形式 2)输入是否全部大写(仅将输入转换为大写对此不可行)

我想确保我的输入格式为 XX_XX。这是我所拥有的:

public bool IsKosher(string input)
{
    Regex r = new Regex(input);
    if(r.Matches([A-Z]_[A-Z]))
    {
        return true;
    }
    return false;     
}

任何想法为什么它不编译?

谢谢!

4

4 回答 4

5

您缺少双引号,将参数放在错误的位置,并且不需要if声明:

public bool IsKosher(string input) {
    return Regex.IsMatch(input, "[A-Z]{2}_[A-Z]{2}");
}
于 2012-05-22T19:57:28.670 回答
3

引号?缺少右括号?匹配不返回布尔值?交换字符串参数?所有这些都会导致您的代码无法编译。

虽然如果它是“XX_XX”你可能想要这个:

var r = new Regex("[A-Z]{2}_[A-Z]{2}");
return r.IsMatch(input);
于 2012-05-22T19:54:53.983 回答
2

您必须将 [AZ]_[AZ] 放在引号之间,如下所示:

if(r.Matches("[A-Z]_[A-Z]")
于 2012-05-22T19:55:59.547 回答
2
  1. 引号。
  2. 两边的两个字符_
  3. 构造Regex函数采用模式;该Matches方法采用字符串进行搜索。
  4. Matches方法返回一个MatchCollection. IsMatch返回一个布尔值。

像这样:

if (Regex.IsMatch(input, "[A-Z]{2}_[A-Z]{2}")
于 2012-05-22T19:56:11.030 回答