2011-11-03 136 views
2

我需要一個正則表達式來驗證信用卡到期日。請注意,「日期」的格式是MM/YY,其中YY是沒有世紀的年份,MM是月份(從01到12)。我不需要YY在一些有限的範圍內,但只有MM。 預先感謝您。正則表達式來描述信用卡到期日(有效期)

+0

呃,'YY'是沒有世紀的一年。 –

+0

是的,我的錯誤是今年:) –

回答

16

這正則表達式做這項工作:

(0[1-9]|1[0-2])\/[0-9]{2} 

注意,它有一個捕獲組,這取決於你的正則表達式引擎,你可以把它非捕獲這樣的:

(?:0[1-9]|1[0-2])\/[0-9]{2} 
0

修改要求爲什麼你不需要一年的範圍......因爲, 1.你接受的答案的正則表達式不符合你的接受標準,因爲「12/99900」 2.即使你有更好的正則表達式,它也是容易出現越野車和更多的馬intenance工作爲過期日期允許被處理......

一般的動態數據,其極限改變不應該使用模式匹配來驗證

- 除非格局的變化以及

0
currentDate = new Date() 
currenYear = currentDate.getFullYear() 

ones_number = currenYear % 10 
tens_number = Math.floor(currenYear % 100/10) 

regrexStr = '^((0[1-9])|(1[0-2]))\/?((' + tens_number + '[' + ones_number + '-9])|([' + (tens_number + 1) + '-9][0-9]))$' 

這可以運行從現在開始直到MMYY或MM/YY格式的地球末端