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

Posted

技术标签:

【中文标题】使用正则表达式验证信用卡格式?【英文标题】:Validating credit card format using regular expressions? 【发布时间】:2016-07-31 23:23:42 【问题描述】:

我有一项任务要求我使用正则表达式验证某些信用卡格式。例如,万事达卡有 16 位数字,以 5 开头,后跟 15 位数字,因此正则表达式如下:

\b5[0-9]15\b

以下信用卡格式的正则表达式是什么?

大来卡:信用卡有 14 位数字,以 301、302、303、304、305、36 或 38 开头。

JCB:信用卡有 15 位以 2131 或 1800 开头,或者有 16 位并以 35 开头

谢谢!

【问题讨论】:

【参考方案1】:

这应该涵盖所有的基础(由 RegEx Buddy 提供):

^(?:
(?<visa>4\d3[ -]*\d4[ -]*\d4[ -]*\d(?:\d3)?) |
(?<mastercard>5[1-5]\d2[ -]*\d4[ -]*\d4[ -]*\d4) |
(?<discover>6(?:011|5[0-9]2)[ -]*\d4[ -]*\d4[ -]*\d4) |
(?<amex>3[47]\d2[ -]*\d6[ -]*\d5) |
(?<diners>3(?:0[0-5]|[68][0-9])\d[ -]*\d6[ -]*\d4) |
(?<jcb>(?:2131|1800)[ -]*\d6[ -]*\d5|35\d2[ -]*\d4[ -]*\d4[ -]*\d4)
)$

【讨论】:

以上是关于使用正则表达式验证信用卡格式?的主要内容,如果未能解决你的问题,请参考以下文章

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

CakePHP 使用正则表达式验证蒙面信用卡

为啥 C# 正则表达式信用卡验证函数会使用无效值进行验证? [复制]

正则表达式 - 信用卡验证

用于验证日期的正则表达式 [重复]

form表单验证和事件正则表达式