我有这一行来匹配 ABC123457 或 123457
Regex regex = new Regex(@"^(ABC|[])[0-9]{7}$");
所有在线正则表达式测试人员都说这是正确的,并且按预期工作。
可能是 System.Text.RegularExpression 中的错误,因为 [] 为空?
请您参考如下方法:
您不能在 .NET 正则表达式中使用 [] 来表示空字符串。如果您将正则表达式粘贴到 .NET 正则表达式测试站点,您会看到
实际上,你的表达式被解析为
^- 字符串的开始(- 捕获组的开始ABC- 文字子串|- 或者[- 字符类的开始])[0-9-],),[, digits
]{7}- 出现 7 次$- 字符串结尾。
此处没有结尾)。
要修复当前模式,只需使用一个可选的非捕获组:
Regex regex = new Regex(@"^(?:ABC)?[0-9]{7}$");
^^^^^^^^
参见 regex demo 。
