2010-07-15 60 views
3

有人可以幫我組成一個正則表達式來檢查一個字母數字字符串是在一個特定的格式。正則表達式來檢查字符串是特定的格式

首字符必須是字母,接下來的6個字符是數字......例如x279833或X279833都是有效的。

這是我想出 -^[A-ZA-Z] {1} [0-9] {6} $

問候

+5

在正則表達式中使用'{1}'是非常多餘的。 – 2010-07-15 23:28:05

+1

@安迪:「但明確比隱含更好!」 - 當然,我只是在開玩笑。或者,也許我不是。另請參閱http://stackoverflow.com/questions/3032593/using-explicitly-numbered-repetition-instead-of-question-mark-star-and-plus – polygenelubricants 2010-07-16 10:04:38

+1

@poly:我想你可以稱它爲偏好,但我認爲在一種語言中使用多餘的習語往往意味着缺乏理解或擔心對您的同事缺乏理解。或者,也許我沒有。 ;-) – 2010-07-16 10:58:12

回答

5

此致應該只是罰款(您編輯它後,我寫了這個答案),但{1}是完全不必要的。您可以稍微縮短以使用\d而不是[0-9]。

如果你想確保整個字符串是格式,使用:

^[a-zA-Z]\d{6}$ 
+1

非常感謝您的澄清。 – Kojof 2010-07-15 23:42:13

4

類似:

^[a-zA-Z]\d{6}$ 
  • [a-zA-Z]比賽阿爾法字符
  • \d數字字符匹配
  • {6}將匹配6點出現之前的令牌,在這種情況下,6個數字字符
+0

如果沒有開始'^'和結束'$'匹配,這將匹配部分字符串,如'abcd123456789' – 2010-07-15 23:30:37

+1

@Andy E,謝謝補充。 – krock 2010-07-15 23:31:27

2

我不認爲我可以說尚未考慮除了考慮國際字符什麼。如果您的第一個字符也可以是來自其他字符集的字母字符,您可能需要使用預定義的字符類。在這種情況下,你會有這樣的事情:

^[[:alpha:]]\d{6}$ 
+0

+1好點,但取決於正則表達式的特定方言是否支持命名字符類。 (OP沒有指定) – 2010-07-16 00:52:58