如何編寫正則表達式來匹配遵循這些規則的字符串?正則表達式匹配卡代碼輸入
- 1字母后跟4個字母或數字,然後
- 5字母或數字,然後
- 3字母或數字後跟一個數字和下列標誌之一:! & @?
我需要允許輸入爲15個字符的字符串或3個由一個空格分隔的5個字符組。
我正在用JavaScript實現它。
如何編寫正則表達式來匹配遵循這些規則的字符串?正則表達式匹配卡代碼輸入
我需要允許輸入爲15個字符的字符串或3個由一個空格分隔的5個字符組。
我正在用JavaScript實現它。
這應該是它:
/^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i
可以隨意更改0-9和[0-9]與\d
,如果你認爲合適的。
正則表達式很簡單,可讀性足夠。 ^
和$
確保這是一個完整的匹配項,所以在代碼之前或之後沒有額外的字符,並且/i
標誌允許大寫或小寫字母。
我會以tutorial開頭。
注重量詞(如{N}
)和字符類(如[a-zA-Z]
)
我不會寫出來的整個正則表達式你,因爲這是家庭作業,但這裏有一些提示,這將有助於你出:
[A-Z]
全部大寫。 [a-z]
全部小寫。 [0-9]
匹配數字。你可以像他們那樣組合[A-Za-z0-9]
。{n}
所以[A-Z]{3}
給你3個大寫字母。[%@#]
這將匹配任何這些字符。\$
^
和$
比賽開始和結束時(因爲$
行的結尾匹配)的線分別。\s
與白色空格匹配,但如果您清理輸入內容,則不需要使用此選項。/[a-z]/i
中,i
忽略了大小寫。這並不清楚這是家庭作業,那只是一些駕駛標籤破壞者。 – 2010-04-11 00:52:19
@Roger:即使不是家庭作業*本身* OP顯然發現自己*學習*正則表達式,並且會得到比完成答案更多的教學反應。或者至少這是我的看法。 – dmckee 2010-04-11 02:17:14
@dmckee:我不是說不應該給出一個教學的答案;就像非家庭作業問題一樣,解釋爲什麼總是更有價值。但是,「你不值得一個完整的答案,這裏有一些提示」的回答是輕度冒犯的(充其量)。 – 2010-04-11 02:42:00
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[\!\&\@\?]$
您不需要在字符類中轉義這些字符; '[!&@?]'就足夠了。 – Gumbo 2010-04-10 20:28:10
我想我已經有一個人做所有我的家庭作業的太... – Stephen 2010-04-10 20:08:07
的規範並僅允許15首或17個字符;你的正則表達式也允許16個字符。 – Gumbo 2010-04-10 20:09:04
@Stephen - 我希望我有作業。 – 2010-04-10 20:09:41