Regex số thẻ tín dụng

Dùng /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ để kiểm tra toàn bộ chuỗi có phải là số thẻ tín dụng hợp lệ hay không. Mọi ví dụ bên dưới đều đã được thử với mẫu này, và bạn có thể mở chúng trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/
Mở trong Regex Tester
Đầu vàoKết quả
4111111111111111✓ Khớp
5500000000000004✓ Khớp
378282246310005✓ Khớp
1234567812345678✗ Không khớp
4111 1111 1111 1111✗ Không khớp
411111111111111✗ Không khớp

Cách hoạt động của mẫu

PhầnÝ nghĩa
4\d{12}(?:\d{3})?Visa: bắt đầu bằng 4, gồm 13 hoặc 16 chữ số
5[1-5]\d{14}Mastercard: 51–55, gồm 16 chữ số
3[47]\d{13}American Express: bắt đầu bằng 34 hoặc 37, gồm 15 chữ số

Ví dụ mã

JavaScript

const re = /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/;
re.test(value); // true or false

Python

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;

Ghi chú và giới hạn

Xóa khoảng trắng và dấu gạch ngang trước khi kiểm tra, sau đó chạy kiểm tra tổng Luhn — regex chỉ kiểm tra định dạng. Mastercard cũng cấp số trong dải 2221–2720; thêm |2(?:2[2-9]|[3-6]\d|7[01]|720)\d{12} để bao gồm các số này. Không bao giờ ghi log hay lưu số thẻ thô. Các ví dụ là số thẻ thử nghiệm tiêu chuẩn.

Câu hỏi thường gặp

Regex cho số thẻ tín dụng là gì?
/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ — mẫu này khớp toàn bộ chuỗi. Xem bảng phía trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã thử, những số này khớp: 4111111111111111, 5500000000000004, 378282246310005. Các số còn lại không khớp.
Làm sao để thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được nạp, và các phần khớp sẽ được tô sáng khi bạn chỉnh sửa.