Regex für US-Sozialversicherungsnummer

Mit /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ prüfst du, ob ein ganzer String eine gültige US-Sozialversicherungsnummer ist. Jedes Beispiel unten wurde gegen das Muster getestet, und du kannst es mit vorgeladenen Beispielen im Regex Tester öffnen.

Aktualisiert am

/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/
Im Regex Tester öffnen
EingabeErgebnis
123-45-6789✓ Treffer
219-09-9999✓ Treffer
000-12-3456✗ Kein Treffer
666-12-3456✗ Kein Treffer
123-00-4567✗ Kein Treffer
123456789✗ Kein Treffer
900-12-3456✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
(?!000|666|9\d\d)\d{3}Bereichsnummer: drei Ziffern, aber nie 000, 666 oder 900–999
(?!00)\d{2}Gruppennummer: nie 00
(?!0000)\d{4}Seriennummer: nie 0000
-Bindestriche zwischen den Teilen

Code-Beispiele

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;

Hinweise und Einschränkungen

Negative Lookaheads schließen Nummernbereiche aus, die die Social Security Administration nie vergibt. Behandle SSNs als sensible Daten: Maskiere sie in Logs und Oberflächen.

Häufige Fragen

Wie lautet der Regex für die US-Sozialversicherungsnummer?
/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ — er prüft den gesamten String. Was jeder Teil macht, siehst du in der Tabelle oben.
Welche Beispiele passen?
Von den getesteten Beispielen passen diese: 123-45-6789, 219-09-9999. Die anderen nicht.
Wie teste ich diesen Regex?
Klicke auf „Im Regex Tester öffnen“ – Muster, Flags und Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten markiert.