2014-06-19 54 views
2

嗨,我必須寫一個正則表達式,應該匹配的格式,如A12BC。這裏前2個字符是A & 1是強制性的,接下來的3個字符2B & C是可選的。目前我的regEx工作,如果我給字符串值爲A12BC正則表達式接受5個字符與可選

當我給輸入作爲A1B它不應該匹配,但我的正則表達式匹配,並給我的結果作爲疑問。任何一個可以請幫我修改我的正則表達式,從而 ,它表現爲每如下:

  • 案「A1」:應符合
  • 案「A1B」:如果不匹配(這種情況下是不工作)
  • 案 「A12B」:應符合
  • 案 「A12BC」:應符合
  • 案 「A12BCD」:如果不匹配

我經常expressio n爲如下:

^[a-zA-Z][0-9][0-9]?[a-zA-Z]?[a-zA-Z]?$ 
+0

你使用什麼語言? 'C#'還是'tsql'?從問題中刪除必要的標籤。 – Typist

+0

@Typist我正在使用C# –

回答

0

爲了確保第三字符,如果存在的話,是一個數字,使第三字符強制在任選的基團,如下所示:

^[a-zA-Z][0-9]([0-9][a-zA-Z]?[a-zA-Z]?)?$ 

這個表達式說如果第三個字符存在,它需要匹配一個數字。兩個尾隨字母也是可選的。

注意:您可以使用預定義的Character Classes\w代表字母,\d代表數字來簡化表達式。請記住,您需要在「普通」字符串文本中使用雙反斜槓(與逐字字符串文字相反,反斜槓不加倍)。

+0

你美!這工作非常感謝。 –

0

您可以使用:

^[a-zA-Z][0-9](?:[0-9][a-zA-Z]{0,2})?$ 

2BC模式,你必須允許零,一個或兩個字母之前,在數字強制性的。

(?:[0-9][a-zA-Z]{0,2})?匹配空字符串或數字或數字後跟一個字母或數字後跟兩個字母,但不是單個字母。

(?:...)是非捕獲組,參見demo here

+0

你的解決方案也可以,但是它們的形式有什麼不同呢,它們在功能上看起來都是一樣的 –

+0

@SanjuRao:這裏的差異是微不足道的,它們基本上是用略有不同的風格寫成的。 – Robin

+0

感謝您的幫助羅賓 –