我是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。
我不知道这对你来说是否“足够”?
答案 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依赖于引擎。