Skip to main content
 首页 » 编程设计

由连字符分隔的 x 组 A-Z 的 C# 正则表达式

2024年01月31日23傻小

我正在尝试匹配以下模式。

至少 3 个由连字符分隔的“组”字母数字字符。

例如:ABC1-AB-B5-ABC1

每个组的长度可以是任意数量的字符。

我尝试了以下方法:

^(\w*(-)){3,}?$ 

这在一定程度上给了我想要的东西。

ABC1-AB-B5-0001 失败,ABC1-AB-B5-0001- 通过。

我不希望尾随连字符成为必需条件。

我不知道如何修改表达式。

请您参考如下方法:

您的 ^(\w*(-)){3,}?$ 模式甚至允许像 ----- 这样的字符串,因为这里唯一需要的模式是一个连字符:\w* 可能匹配 0 个字符。因此 - 可能既是前导又是尾随。

你可以使用

\A\w+(?:-\w+){2,}\z 

详细信息:

  • \A - 字符串的开始
  • \w+ - 1+ 个单词字符(即字母、数字或 _ 符号)
  • (?:-\w+){2,} - 2 个或更多序列:
    • - - 一个连字符
    • \w+ - 1 个或多个单词字符
  • \z - 字符串的末尾。

参见 regex demo .

或者,如果您不想允许 _:

\A[^\W_]+(?:-[^\W_]+){2,}\z 

或者只允许 ASCII 字母和数字:

\A[A-Za-z0-9]+(?:-[A-Za-z0-9]+){2,}\z