2010-04-10 11 views
3

如何編寫正則表達式來匹配遵循這些規則的字符串?正則表達式匹配卡代碼輸入

  • 1字母后跟4個字母或數字,然後
  • 5字母或數字,然後
  • 3字母或數字後跟一個數字和下列標誌之一:! & @?

我需要允許輸入爲15個字符的字符串或3個由一個空格分隔的5個字符組。

我正在用JavaScript實現它。

回答

1

這應該是它:

/^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i 

可以隨意更改0-9和[0-9]與\d,如果你認爲合適的。
正則表達式很簡單,可讀性足夠。 ^$確保這是一個完整的匹配項,所以在代碼之前或之後沒有額外的字符,並且/i標誌允許大寫或小寫字母。

+5

我想我已經有一個人做所有我的家庭作業的太... – Stephen 2010-04-10 20:08:07

+3

的規範並僅允許15首或17個字符;你的正則表達式也允許16個字符。 – Gumbo 2010-04-10 20:09:04

+0

@Stephen - 我希望我有作業。 – 2010-04-10 20:09:41

1

我會以tutorial開頭。

注重量詞(如{N})和字符類(如[a-zA-Z]

5

我不會寫出來的整個正則表達式你,因爲這是家庭作業,但這裏有一些提示,這將有助於你出:

  • 使用字符類。 [A-Z]全部大寫。 [a-z]全部小寫。 [0-9]匹配數字。你可以像他們那樣組合[A-Za-z0-9]
  • 使用量詞如{n}所以[A-Z]{3}給你3個大寫字母。
  • 您可以將其他字符放在字符類中。比方說,你想匹配%或@或#,你可以做[%@#]這將匹配任何這些字符。
  • 一些元字符(字符,在正則表達式的背景下特殊含義),就需要進行轉義像這樣:\$
  • ^$比賽開始和結束時(因爲$行的結尾匹配)的線分別。
  • \s與白色空格匹配,但如果您清理輸入內容,則不需要使用此選項。
  • 正則表達式之後的標誌做特殊的事情。例如在/[a-z]/i中,i忽略了大小寫。
+1

這並不清楚這是家庭作業,那只是一些駕駛標籤破壞者。 – 2010-04-11 00:52:19

+0

@Roger:即使不是家庭作業*本身* OP顯然發現自己*學習*正則表達式,並且會得到比完成答案更多的教學反應。或者至少這是我的看法。 – dmckee 2010-04-11 02:17:14

+0

@dmckee:我不是說不應該給出一個教學的答案;就像非家庭作業問題一樣,解釋爲什麼總是更有價值。但是,「你不值得一個完整的答案,這裏有一些提示」的回答是輕度冒犯的(充其量)。 – 2010-04-11 02:42:00

0
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[\!\&\@\?]$ 
+2

您不需要在字符類中轉義這些字符; '[!&@?]'就足夠了。 – Gumbo 2010-04-10 20:28:10