我要将此行与ABC123457
或123457
Regex regex = new Regex(@"^(ABC|[])[0-9]{7}$");
所有在线正则表达式测试人员都认为这是正确的,并且按预期工作
由于空System.Text.RegularExpression
?
[]
中的错误
答案 0 :(得分:4)
您不能在.NET正则表达式中使用[]
来表示空字符串。如果您将正则表达式粘贴到.NET正则表达式测试站点中,您将看到
实际上,您的表达式被解析为
^
- 字符串开头(
- 开始捕获小组ABC
- 文字子字符串|
- 或[
- 开始一个角色类
])[0-9
- ]
,)
,[
,数字]{7}
- 7次出现$
- 字符串结束。 这里没有结尾)
。
要修复当前模式,只需使用可选的非捕获组:
Regex regex = new Regex(@"^(?:ABC)?[0-9]{7}$");
^^^^^^^^
请参阅regex demo。