-3

I have an assignment that requires me to validate certain credit card formats using regular expressions. For example a MasterCard has 16 digits, starts with a 5 and is followed by 15 digits, so the regular expression would be as follows:

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

What would be the regular expressions for the following credit cards formats?

Diners Club: credit card has 14 digits and begins with either 301, 302, 303, 304, 305, 36 or 38.

JCB: credit card has either 15 digits beginning with either 2131 or 1800, or has 16 digits and begins with 35

Thanks!

Z Zhong
  • 11
  • 5

1 Answers1

1

This should cover all of the bases (provided by 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})
)$
Ken White
  • 123,280
  • 14
  • 225
  • 444