2014-03-07 89 views
2

我有以下正則表達式模式:C#正則表達式來驗證串

"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}" 

,我想驗證串以下列條件

  • 僅允許字母數字字符
  • 具有僅長度8或11
  • 前6個字符必須都是大寫字母

但是,上述模式不起作用。什麼需要改變?

+0

嘗試http://Regexhero.net它的測試表達式的好工具。 –

+0

試試這個:(?:[a-zA-Z] {8,11} \ d +) –

+0

如果你想要更準確的答案。你應該貼一些例子。 –

回答

7

使用以下正則表達式:

^[A-Z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$ 

前6個字符必須是大寫字母(^意味着以下圖案應當匹配在字符串的開頭):

^[A-Z]{6} 

現在應該有2或5個以上的字母數字字符; 2個字母數字chracters應該來無論如何:

[A-Za-z0-9]{2} 

和3之後是可選的(?:0或1個匹配前述圖案,$意味着前述圖案應匹配於字符串的末尾):

([A-Za-z0-9]{3})?$ 

使用^$一起(^PATTERN$),圖案應整個字符串代替子串匹配。

+1

很好的詳細解釋。很教學! :)爲了完整性,您可以添加'^'表示模式的那部分必須位於目標字符串的開始處(錨定到它的開始處),並且'$'將另一端錨定到字符串的末尾以同樣的方式,這樣這個模式_must_代表_whole_目標字符串。 – Kjartan

+0

@Kjartan,謝謝你的建議。我添加了關於'^','$'的解釋。 – falsetru

1

表達應該是:

^[A-Z]{6}([A-Za-z0-9]{2}|[A-Za-z0-9]{5})$