15.8.1 問題
如何建立一個正則表達式, 用來證驗主流的信用卡包括Visa, MasterCard, American Express,Discover 等等呢?
15.8.2 解決辦法
根據(jù)以下的原則去創(chuàng)建一個正則表達式:
找出起首的幾個數(shù)字跟哪個信用卡公司的卡相符
然后根據(jù)相對應的卡的種類, 檢查輸入的數(shù)字是否正確。
15.8.3 討論
實際上, 所有主流信用卡號碼都會存在著一些用以辨識的數(shù)字, 我們可以通過這原理去創(chuàng)建所需要的正則表達式。例如: MasterCard 會以5 為起首, Visa 卡則會以4 作為起首, 還有American Express 的卡都會以30 作為起首, 而Discover 卡就會以6011 為起首。代碼如下:
(5[1–5]/d{14})|(4/d{12}(/d{3})?)|(3[47]/d{13})|(6011/d{14})
就以這段代碼(5[1–5]/d{14})為例, 它可以用來驗證任何不包含空格的MasterCard 號碼。所以, 在進行任何進一步處理之前, 我們都應該把信用卡號里的空格都清除掉。接下來的代碼以”|”號這個標記隔開分別為Visa, American Express 和Discover 卡的表達式, 而”|”號則代表著你可以跟其中任何一種卡進行匹配。