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

Validating credit card format using regular expressions?

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

\b5[0-9]{15}\b

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

Diners Club:信用卡有 14 个数字,以 301、302、303、304、305、36 或 38 开头。

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

谢谢!

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

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