簡體   English   中英

C# 正則表達式,如何檢查正則表達式組是否僅包含數字

[英]C# Regex, how can I check that a regex group contains only digits

我在 C# 中創建了以下正則表達式模式:

Regex pattern = new Regex(@"(?<prefix>retour-)?(?<trackingNumber>\s*[0-9]+\s*)(?<postfix>-([0]|[1-9]{1,2}))?");
(?<prefix>retour-)?(?<trackingNumber>\s*[0-9]+\s*)(?<postfix>-([0]|[1-9]{1,2}))?
  • 這就是我想要的:三組。
    • prefix組是"retour-" ,如果出現,則位於開頭。
    • trackingNumber組是強制性的,應僅包含數字。
    • postfix組是"-" ,后面只有數字,不是強制性的。
  • 我希望trackingNumber組只有在包含數字時才能成功。 postfix也是如此。 在一個類似的問題中,問題是通過使用正則表達式錨(^, $)解決的,但在我的情況下,我不能使用它們,因為trackingNumber組從中間開始。

例如

  • "1234ABC3456"不應該成功
  • "retour-123456-12B"也不應該成功

問題是正則表達式(?<trackingNumber>\s*[0-9]+\s*)即使對於不只包含數字的系列也會返回成功。

這種模式對我有用:

^(?<prefix>retour-)?\s*(?<trackingNumber>\d+)\s*(?<postfix>-(\d+))?$
輸入 結果
1234ABC3456 沒有匹配
retour-123456-12B 沒有匹配
retour-123456-123 前綴: "retour-" ,trackingNumber: "123456" ,postFix: "-123"
543210-999 trackingNumber: "543210" ,后綴: "-999"
987654 追蹤號碼: "987654"

https://regex101.com/r/Fo1pvU/1

暫無
暫無

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

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