使用正则表达式进行信用卡验证?

时间:2009-09-22 23:59:38

标签: c# credit-card verification

使用正则表达式验证信用卡的正确方法是什么?如果使用哪一个在线有吨。如果不是如何验证?

5 个答案:

答案 0 :(得分:13)

使用Regulars Expressions

查看此链接Finding or Verifying Credit Card Numbers
  • 签证:^ 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位数字。

再见。

答案 1 :(得分:6)

How can I use credit card numbers containing spaces?涵盖了您应该需要的一切。

答案 2 :(得分:1)

我认为你正在寻找Luhn Algorithm。这是一个简单的校验和公式,用于验证各种识别号码。

答案 3 :(得分:0)

- 编辑:

事实上,我会略微不同意自己并同意克莱图斯。在发送之前尽可能多地验证(没有详细了解特定类型的信用卡[恕我直言])。并且不用说(希望),这个验证应该在JavaScript中完成,以使其快速,然后在服务器上,进行双重检查(以及JavaScript禁用的人)。

- 之前的回复:

不要打扰;只需让提供商在您实际尝试付款时进行验证。没有合理的理由尝试自己验证它。如果您真的喜欢,可以使用this

答案 4 :(得分:0)

这取决于您希望预验证的准确程度。要验证您能做的一切,您需要计算卡的最后一位应该是什么,并与输入的内容进行比较,这是RegEx无法做到的。

有关算法和其他详细信息,请参阅this link,其中还提供了可以验证的公共号码前缀列表。