2011-12-16 74 views
3

我正在使用此^[S-s][0-9]{4}$來驗證我的字符串,但無法正常工作。我的字符串必須採用字母S(大寫或小寫)後跟4位數字的形式,例如, S1234。看起來它適用於S上面的字母,這意味着如果我輸入w1234它證實了正確,但是如果我在下面輸入一個字母,如a1234它不驗證。謝謝。正則表達式以特定字母開頭

+0

聽起來很落後。 '[S-s]'等同於'''STUVWXYZ \ [\\\]^_'abcdefghijklmnopqrs]'''。我期望它匹配'a'或'W',但不匹配'A'或'w'。 –

+0

謝謝你的提示,現在我明白了爲什麼它匹配s上面的字母。 – user282807

回答

10

你需要擺脫破折號:內[...]分別表示字符範圍

^[Ss][0-9]{4}$ 

破折號。因此在正則表達式中的S-s意味着「S和s之間的Unicode字符表中的每個字符」,並且由於這兩個不相鄰,所以最終得到一串匹配的字符。

+0

改爲^ [S-Zs-z]我認爲這個問題是在你身上編輯的。 – DefyGravity

+0

^[Ss] [0-9] {4} $適合我。我只是想要第一個字母是S(小或大)。 – user282807

0

[S-s]表示大寫字母S和小寫字母s之間的所有字符的範圍。改爲嘗試^[Ss][0-9]{4}$。或者更好的是,^s\d{4}$帶有不區分大小寫修飾符(許多語言中爲/i)。

相關問題