Skip to main content
 首页 » 编程设计

c#之正则表达式错误表达式不够 ")"

2024年02月04日27lhb25

我有这一行来匹配 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 。