簡體   English   中英

C#正則表達式,用於x個連字符分隔的AZ組數

[英]C# Regular Expression for x number of groups of A-Z separated by hyphen

我正在嘗試匹配以下模式。

至少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演示

或者,如果您不想允許_

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

或僅允許ASCII字母和數字:

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

可能是這樣的:

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

匹配2個以上由連字符分隔的組,然后匹配一個可能由連字符終止的組。

((?:-?\\w+){3,})

匹配最少3個組,可選地以連字符開頭 ,因此忽略尾隨的連字符。

請注意, \\w字字符還會選擇下划線char _以及0-9az

鏈接到演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM