2014-01-27 152 views
4

我需要找到限制數據輸入的模式。我需要它來限制輸入:正則表達式模式與輸入字符串不匹配

首字符必須是「S」 二字符必須是「S」,「T」,「W」,「X」或「V」 接下來的6必須號碼0 - 9 最後2可以是任意大寫字母或任意數量的0 - 9

所以我的研究使我把這個在一起.....

^[S][STWXV]/d{6}[A-Z0-9]{2}$

從我閱讀:

[S]意味着資本字母S僅 [STWXV]意味着從這個名單 /d{6}意味着6位 [A-Z0-9]{2}指2個字符的任何一個字母 - Z或0 - 9

我不是一個字符串尋找匹配的任何地方,我需要整個字符串來匹配這個模式。

那麼爲什麼Regex.IsMatch("SX25536101", "^[S][STWXV]/d{6}[A-Z0-9]{2}$")返回false?

伊夫顯然出了問題的地方,但這個是我在正則表達式的第一次嘗試,這是沒有意義:(

+2

嘗試找到更好地描述您的問題的標題。考慮這個標題將被用於搜索引擎。 –

+1

如此接近:嘗試\ d而不是/ d –

+1

反斜槓轉義有趣的字符,如\ d。正斜線用多種語言寫在正則表達式的任一側,表示表達式是正則表達式。 –

回答

8

您需要使用\d的數字:

Regex.IsMatch("SX25536101", @"^[S][STWXV]\d{6}[A-Z0-9]{2}$"); // true 

注:這是很好的Regular Expressions Cheat Sheet它可以幫助你在未來

+2

多煩人得到如此密切的一個不現貨這樣一個愚蠢的錯誤!謝謝。 – FlipTop

-1

或者不使用在所有\d(首選和更快):

^S[STWXV][0-9]{6}[A-Z0-9]{2}$

請參閱herehere爲什麼。

+0

爲什麼這是首選? -1 – OGHaza

+1

\ d是數字的簡寫,它使正則表達更加簡潔。用它。 –

相關問題