2012-11-19 37 views
1

可能重複:
Regular Expression to describe Credit Card expiry (valid thru) date正則表達式信用卡到期日

我試圖找到一個正則表達式來驗證一個4位數的信用卡到期日。格式是YYMM

我試圖[12-99]{2}[0-12]{2} 但是這允許00在一個月

所以我想我真的需要一種方法來匹配第三和第四位數字加上0至12之間的數字,而佔主導零

任何想法?

+1

這不是字符類的工作方式。 – NullUserException

回答

3

[12-99]表示12-99,相當於[1-9][0-12]意味着0-12,相當於[0-2]

你可以去這樣的事情:

(1[2-9]|[2-9][0-9])(0[1-9]|1[0-2]) 

正如你所看到的,檢查numeric ranges有點正則表達式是件麻煩事。如果您使用的是編程語言(而不是工具或XSD限制),則應該檢查(\d\d)(\d\d),然後使用編程語言的整型不等式運算符來驗證兩個捕獲的數值範圍。這也將允許您使有效年限的下限取決於當年(因此,2013年前12不再允許前兩位數字,而不需要更改代碼)。