使用正则表达式进行信用卡validation?
使用正则表达式validation信用卡的正确方法是什么? 如果使用哪一个在线有吨。 如果不是如何validation?
如何使用包含空格的信用卡号? 涵盖了您应该需要的一切。
请参阅此链接使用Regulars表达式查找或validation信用卡号
- 签证:^ 4 [0-9] {12}(?:[0-9] {3})?$所有Visa卡号以4开头。新卡有16位数。 旧卡有13个。
- 万事达卡:^ 5 [1-5] [0-9] {14} $所有万事达卡号码都以数字51到55开头。所有号码都有16位数字。
- 美国运通:^ 3 [47] [0-9] {13} $美国运通卡号码以34或37开头,有15位数字。
- 大来俱乐部:^ 3(?:0 [0-5] | [68] [0-9])[0-9] {11} $ Diners Club卡号以300到305,36或38开头。所有人都有14个数字。 Diners Club卡以5开头,有16位数字。 这些是大莱卡和万事达卡之间的合资企业,应该像万事达卡一样处理。
- 发现:^ 6(?:011 | 5 [0-9] {2})[0-9] {12} $发现卡号以6011或65开头。全部有16位数。
- JCB:^(?:2131 | 1800 | 35 \ d {3})\ d {11}以2131或1800开头的JCB卡有15位数。 以35开头的JCB卡有16位数字。
再见。
我想你正在寻找Luhn算法 。 这是一个简单的校验和公式,用于validation各种识别号码。
这取决于您希望预validation的准确程度。 要validation您能做的一切,您需要计算卡的最后一位应该是什么,并与输入的内容进行比较,这是RegEx无法做到的。
有关算法和其他详细信息,请参阅此链接 , 该链接还提供了可以validation的公共号前缀列表。
– 编辑:
事实上,我会略微不同意自己并同意克莱图斯。 在发送之前尽可能多地validation(没有详细了解特定类型的信用卡[恕我直言])。 并且不用说(希望),这个validation应该在JavaScript中完成,以使其快速,然后在服务器上,以进行双重检查(以及JavaScript禁用的人)。
– 以前的回复:
不要打扰; 只需让提供商在您实际尝试付款时进行validation。 没有正当理由尝试自己validation它。 如果你真的喜欢它,你可以使用它。