ol'正则表达式令人沮丧

时间:2011-10-04 16:08:20

标签: c# regex

我是regex的新手,并试图做一些好的阅读,但最终它没有用。我想匹配一个2个字母然后4个数字的字符串。空间不足。仅限大写字母。我正在使用

"^[A-Z]{2}[0-9]{4}$"

当我喂它AB1234时,它说FALSE。

我哪里出错了,如何使这个正则表达式工作。谢谢!

修改 我有一个userControl(ctrlSamplerSet),其文本框名为txtSamplerBarcode。 我在运行此方法的txtSamplerBarcode.TextChanged事件上调用usercontrol的Validate()方法

private void ctrlSamplerSet_Validating(object sender, CancelEventArgs e)
    {
        string bc = txtSamplerBarcode.Text;
        if (bc.Contains("UP")) { _validEntry= checkForregularBarcodeSyntax(bc); }
    }

我将其text属性传递给我的checkForregularBarcodeSyntax方法。

private bool checkForregularBarcodeSyntax(string bc)
    {
        Regex regBCsyntax = new Regex(@"^[A-Z]{2}[0-9]{4}$",RegexOptions.None);
        bool matchSuccess= regBCsyntax.IsMatch(bc);
        return matchSuccess;
    }

在所有情况下,matchSuccess均为false。

我不知道这对你来说是否“足够”?

4 个答案:

答案 0 :(得分:4)

你的模式是正确的。也许你可以按照这个例子来发现你的错误。

Regex r = new Regex("^[A-Z]{2}[0-9]{4}$");
Console.WriteLine (r.Match("AB1234").Success);

输出:

True

答案 1 :(得分:0)

您是否尝试过匹配它而没有前导^和尾随$字符,如[A-Z]{2}[0-9]{4}

类似的东西:

Match match = Regex.Match("AB1234", @"[A-Z]{2}[0-9]{4}");
if (match.Success) 
{
    ...
}

答案 2 :(得分:0)

正则表达式区分大小写,除非您明确告诉它不是,这可能是您问题的原因。

Regex r = new Regex("^[A-Za-z]{2}[0-9]{4}$");

Regex r = new Regex("^[A-Z]{2}[0-9]{4}$",RegexOptions.IgnoreCase);

答案 3 :(得分:0)

我使用Visual Studios Ctrl + F使用正则表达式作为测试引擎(在我看来,这是我最简单的重复测试方法!)

当我运行原始查询时,它不适用于您的示例文本。

我想出的最终正则表达式是

[A-Z][A-Z][0-9]+{4}

我不确定为什么[0-9] {4}无效,但Regex依赖于引擎。