使用正则表达式验证信用卡的正确方法是什么?如果使用哪一个,网上有很多。如果不是怎么验证?

有帮助吗?

解决方案

如何使用信用卡号码包含空格?涵盖了你应该需要的一切。

其他提示

请参阅此链接 查找或验证信用卡号 与正则表达式

  • 签证:^4[0-9]{12}(?:[0-9]{3})?$ 所有 Visa 卡号均以 4 开头。新卡有 16 位数字。老卡有13张。
  • 万事达:^5[1-5][0-9]{14}$ 所有 MasterCard 号码均以数字 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 位数字。这些是 Diners Club 和万事达卡之间的合资企业,应该像万事达卡一样处理。
  • 发现:^6(?:011|5[0-9]{2})[0-9]{12}$ Discover 卡号以 6011 或 65 开头。全部都是16位数字。
  • 杰西卡:^(?:2131|1800|35\d{3})\d{11}$ 以 2131 或 1800 开头的 JCB 卡有 15 位数字。以35开头的JCB卡有16位数字。

再见。

我认为你正在寻找的卢恩算法。这是用来验证各种识别号码的一个简单的校验式。

这取决于你想如何准确的预验证是。为了验证一切你可以,你需要计算什么的卡的最后一位应该和比较被输入的内容,其中一个正则表达式无法做到的。

有关的算法和其他细节,参见此链接,这也提供了共同的列表号码前缀,你可以验证对

- 编辑:

逸岸,我会稍微对自己不同意与克莱同意。验证不亚于您可以(不进入特定类型的信用卡[恕我直言]的详细信息)在发送之前。而且不言而喻(希望),这验证应该在JavaScript中进行,使之快,然后在服务器上,仔细检查(和禁用JavaScript的人)。

- 上一页响应:

不要打扰;只是让供应商验证,当你真正尝试付款。没有正当理由,试图自行验证。您可以使用这个不过,如果你真的喜欢它的感觉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top