Как работает шаблон
| Часть | Значение |
|---|---|
4\d{12}(?:\d{3})? | Visa: начинается с 4, содержит 13 или 16 цифр |
5[1-5]\d{14} | Mastercard: 51–55, 16 цифр |
3[47]\d{13} | American Express: 34 или 37, 15 цифр |
Примеры кода
JavaScript
const re = /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})', value))PHP
preg_match('/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/', $value) === 1;
Примечания и ограничения
Перед проверкой уберите пробелы и дефисы, затем проверьте контрольную сумму по алгоритму Луна: регулярное выражение проверяет только формат. Mastercard также выпускает номера из диапазона 2221–2720; добавьте |2(?:2[2-9]|[3-6]\d|7[01]|720)\d{12}, чтобы охватить и их. Никогда не записывайте и не храните номера карт в открытом виде. Примеры являются стандартными тестовыми номерами.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.