2011-11-18 71 views
0

我有一個文本字段,需要使用正則表達式進行驗證。我的要求是如下:一個匹配25個字符並以數字開頭的正則表達式

CCCCNNNNNNCCCCNNNNNNN(模板)

1234ABCDEFG123-ABCDEFG(例字符串)

規則:

  • 整個字符串是最多25個字符
  • 第一個fo烏爾字符(CCCC)必須是字母數字
  • CCCC是4個字符準確,可以是數字或數
  • CCCC可以具有短劃線符號作爲第四字符
  • NNNNNNNNNNNN可以長達21個字符和只有數字

Eg AAAA1234A58-是CCCC的有效字符串。

這裏是我的研究筆記:

  • 我需要符合NUMERICS
  • 我將需要+字符到指定X倍匹配此模式
  • 我需要後,以匹配字母對於8-9位

有一個美好的崗位上正則表達式模式在這裏:

Matching numbers with regular expressions — only digits and commas

我的目標是將此REGEX模式應用於WinForms應用程序中的文本框掩碼。

+0

我刪除了我的答案 - 請回去寫一個明智的問題。 – ObscureRobot

+0

非常抱歉,我澄清了我的要求。希望這提供了我需要的更清晰的概念。 – nocarrier

+0

還不夠:對我來說,「前四個字符(CCCC)必須是字母數字」意味着要麼是「ABCD」要麼是「1234」,並且要求「NNNNNNNNNNNN最多可以有21個字符,並且只有數字」與您的示例「1234ABCDEFG」衝突。那麼,我需要匹配8-9個空格後的字母是什麼意思呢? –

回答

3

....

....

...是的 - 我想答案您正在尋找(我強調「認爲」)是這樣的表達:

^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$ 

這就是:

^    # assert beginning (not in the middle) 
[0-9A-Za-z]{3} # three characters that are: 0-9 or a-z (upper or lower) 
[0-9A-Za-z-] # one character that is: 0-9 or a-z (upper or lower) or a dash 
\d{0,21}  # anywhere from 0 to 21 digits 
$    # assert at the end (not somewhere in the middle 

如果你想匹配的幾種情況這個表達式將上面的表達式(減去斷言)與任何允許分離這些值的東西(()) - 我選擇\s或「空白」),然後使用+量詞:

^([0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}\s+)+$ 

將匹配/驗證以下輸入:如果你想別的

1234567890 AAAA123456789GGG-123  hhh5 A1B2000000000 

,你要問一個更清晰的問題(有很多你的問題矛盾,重複,使得它極其令人困惑)

+0

中的評論形式謝謝,讓我重新編輯我的問題,使其更清晰! – nocarrier

+0

最後我檢查了一個標準的MaskedTextBox不使用正則表達式 –

+0

謝謝你儘管矛盾Code Jockey盡力回答這個問題;我已經清理了我的問題,爲我的表達式驗證規則提供了直接的要求。 – nocarrier

相關問題