Regex for Credit Card Number Format

All patterns
Validation21 chars

Regex for Credit Card Number Format

This is a format-only pattern for card-like numbers. It is appropriate for client-side input cleanup, but real validation still needs Luhn checks and payment processor rules.

The expression

/^(?:\d[ -]*?){13,19}$/

How to read it

Anchor: the match must start at the beginning of the string.

Anchor: the match must run to the end of the string.

\d matches a single digit, 0 through 9.

A brace quantifier fixes how many times the previous token repeats.

(?: … ) groups without capturing, so it costs nothing to read back.

Validate your own text, line by line

no input
Try:

This expression is anchored, so it asks whether a whole string is valid. Each line above is tested on its own — it will not find a match inside a longer sentence.

Examples, checked in your browser

4/4 verified

4242 4242 4242 4242

Matches.

5555-5555-5555-4444

Matches.

1234

No match — this is the kind of input the pattern rejects.

card-4242

No match — this is the kind of input the pattern rejects.

Use it in code

3 languages
JavaScript
const regex = /^(?:\d[ -]*?){13,19}$/g;
regex.test(input);
Python
import re
pattern = re.compile(r"^(?:\d[ -]*?){13,19}$")
bool(pattern.search(input))
Go
re := regexp.MustCompile("^(?:\\d[ -]*?){13,19}$")
matched := re.MatchString(input)

Other validation patterns

6
GroupValidation
Flagsnone
Examples4
SafetyOK