Asp.net

使用 Regex OR 運算符解決 2 個條件

  • April 10, 2012

我正在嘗試使用 OR 運算符將 2 個正則表達式組合成 1 個:|

我有一個檢查字母后跟 8 位數字的匹配:

Regex.IsMatch(s, "^[A-Z]\d{8}$")

我有另一個只檢查 9 位數字:

Regex.IsMatch(s, "^\d{9}$")

現在,而不是這樣做:

If Not Regex.IsMatch(s, "^[A-Z]\d{8}$") AndAlso
  Not Regex.IsMatch(s, "^\d{9}$") Then 
   ...
End If

我以為我可以簡單地做:

If Not Regex.IsMatch(s, "^[A-Z]\d{8}|\d{9}$") Then
   ...
End If

顯然我沒有正確地將兩者結合起來,顯然我在正則表達式方面很糟糕。任何幫助將非常感激。

對於那些想知道的人,我確實看了一眼如何在正則表達式中結合 2 個條件和更多條件,但我仍然摸不著頭腦。

怎麼用^[A-Z0-9]\d{8}$

|運算符具有高優先級,並且在您的原始正則表達式中將首先應用。您應該將兩個正則表達式與分組括號結合起來,以明確優先級。如:

"^(([A-Z]\d{8})|(\d{9}))$"

引用自:https://stackoverflow.com/questions/10094534