15.8.1 问题
如何建立一个正则表达式, 用来证验主流的信用卡包括Visa, MasterCard, American Express,Discover 等等呢?
15.8.2 解决办法
根据以下的原则去创建一个正则表达式:
找出起首的几个数字跟哪个信用卡公司的卡相符
然后根据相对应的卡的种类, 检查输入的数字是否正确。
15.8.3 讨论
实际上, 所有主流信用卡号码都会存在着一些用以辨识的数字, 我们可以通过这原理去创建所需要的正则表达式。例如: 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 卡的表达式, 而”|”号则代表着你可以跟其中任何一种卡进行匹配。