Regex số An sinh xã hội Mỹ

Dùng /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ để kiểm tra toàn bộ chuỗi có phải là số An sinh xã hội Mỹ hợp lệ hay không. Mọi ví dụ bên dưới đều đã được kiểm 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

/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/
Mở trong Regex Tester
Đầu vàoKết quả
123-45-6789✓ Khớp
219-09-9999✓ Khớp
000-12-3456✗ Không khớp
666-12-3456✗ Không khớp
123-00-4567✗ Không khớp
123456789✗ Không khớp
900-12-3456✗ Không khớp

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

PhầnÝ nghĩa
(?!000|666|9\d\d)\d{3}Mã vùng: ba chữ số, nhưng không bao giờ là 000, 666 hoặc 900–999
(?!00)\d{2}Mã nhóm: không bao giờ là 00
(?!0000)\d{4}Số seri: không bao giờ là 0000
-Dấu gạch ngang giữa các phần

Ví dụ mã

JavaScript

const re = /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}', value))

PHP

preg_match('/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/', $value) === 1;

Ghi chú và giới hạn

Các lookahead phủ định loại trừ những dải số mà Cơ quan An sinh xã hội không bao giờ cấp. Hãy coi SSN là dữ liệu nhạy cảm: che giấu chúng trong log và giao diện.

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

Regex cho số An sinh xã hội Mỹ là gì?
/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ — 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ụ đã kiểm thử, những ví dụ khớp là: 123-45-6789, 219-09-9999. Các ví dụ còn lại không khớp.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được tải, và các phần khớp sẽ được tô sáng khi bạn chỉnh sửa.