使用正则表达式进行信用卡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它。 如果你真的喜欢它,你可以使用它。