Rexact
Cheatsheet

The most-copied regexes on Stack Overflow

A ranking of the most-voted patterns among those studied on this site - each with a real score on a real corpus, not an assumed reputation.

70 patterns ranked so far, aggregated from Rexact's content pages.

Methodology

"Most copied" isn't measurable anywhere directly - no platform publishes a copy-paste counter. A Stack Overflow answer's vote count is the best public signal available, so that's what's used here to rank patterns. Each row comes from a pattern already sourced and verified for one of the site's content pages: no separate research or verification was done specifically for this page. Each pattern's score is computed by actually running it against its origin page's test corpus (never guessed), with the same ReDoS analysis used everywhere else on the site.

Download the CSV

Ranking

RankTopicpatternVotesSourceScoreReDoS
1strong password^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$2400Stack Overflow — réponse la plus votée au monde sur le sujet, 2,4k votes (Srinivas)15 / 20undetermined
2UUID^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$762Stack Overflow — réponse la plus votée, 762 votes (Ivelin) — ni casse ni version/variant vérifiés15 / 20safe
3UUID^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$613Stack Overflow — réponse conforme RFC 4122, 613 votes (Gambol) — limitée aux versions 1 à 514 / 20safe
4US phone number^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$411Stack Overflow — réponse la plus votée (411 votes), parenthèses non appariées (bug signalé en commentaire : accepte « (212 456 7890 »)13 / 20safe
5US ZIP code (ZIP and ZIP+4)^\d{5}(?:[-\s]\d{4})?$371Stack Overflow (371 votes, réponse acceptée) — accepte une espace à la place du tiret (« 12345 6789 »), que l'USPS ne prévoit pas ; accepte aussi « 00000 » jamais attribué21 / 24safe
6MAC address^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$346Stack Overflow — réponse la plus votée (346 votes), accepte un mélange de tirets et de deux-points (bug signalé en commentaire)19 / 20safe
7IPv6 address^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$340Stack Overflow — réponse la plus votée, 340 votes, avant correction du bug de casse18 / 20safe
8French date (dd/mm/yyyy)^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$307Stack Overflow — extension à 307 votes de la réponse la plus votée, virgule oubliée dans une classe de caractères25 / 28safe
9Decimal GPS coordinates^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$288Stack Overflow — réponse la plus votée du fil (288 votes), bornes correctes mais espace non géré avant la virgule (seulement après) — un commentateur a dû publier un correctif distinct pour ce cas19 / 20safe
10hex color code^#(?:[0-9a-fA-F]{3}){1,2}$268Stack Overflow — réponse la plus votée, 268 votes (Joey), variante 3/6 chiffres18 / 20safe
11US phone number^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$247Stack Overflow — réponse à 247 votes, très permissive, accepte des séparateurs répétés à volonté et aucune contrainte NANP15 / 20vulnerable
12HTML tag^<[^>]*>$235Stack Overflow — regex « attrape-tout » la plus copiée pour nettoyer du HTML, 235 votes13 / 20safe
13ISO 8601 timestamp^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)$173Stack Overflow — réponse la plus votée, 173 votes (Brock Adams), admet accepter un « 14e mois »12 / 20safe
14Decimal GPS coordinates^(-?\d+(\.\d+)?),\s*(-?\d+(\.\d+)?)$140Stack Overflow — réponse à 140 votes, aucune borne : accepte des valeurs hors plage comme « 91,181 » (signalé en commentaire par un autre utilisateur)15 / 20safe
15HTML tag^<(\w+)(\s+(\w+)\s*\=\s*('|")(.*?)\4\s*)*\s*(\/>|>)$103Stack Overflow — réponse structurée avec attributs entre guillemets, 103 votes19 / 20undetermined
16German postal code (PLZ)\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b93Stack Overflow (93 votes) — seule à exclure les régions 05, 43 et 62, mais non ancrée avec \b : « D-10115 », « 10115 Berlin » et « 10115- » passent ; accepte aussi « 01000 », sous le plus bas PLZ attribué20 / 24safe
17Dutch postal code^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$93Stack Overflow (93 votes) — lettres facultatives : « 1234 » seul passe ; accepte aussi SS, SA, SD ; « \s » laisse passer une tabulation ou un saut de ligne21 / 26safe
18US ZIP code (ZIP and ZIP+4)^\d{5}([\-]?\d{4})?$93Stack Overflow (93 votes) — tiret facultatif : « 123456789 » passe, alors que l'USPS dit « un tiret » ; accepte aussi « 00000 »21 / 24safe
19Mastercard card number^[25][1-7][0-9]{14}$88Stack Overflow / regexpattern.com — motif « toutes cartes » (88 votes), portion Mastercard bien trop permissive16 / 20safe
20French date (dd/mm/yyyy)(^(((0[1-9]|1[0-9]|2[0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)86Stack Overflow — réponse à 86 votes, ne gère pas correctement les siècles (bug signalé en commentaire, valide seulement 1901-2099), même virgule oubliée24 / 28safe
21cron expression^(((\d+,)+\d+|(\d+(\/|-)\d+)|\d+|\*) ?){5,7}$80Stack Overflow — réponse la plus votée (80 votes), ne distingue pas la position des champs (accepte « * * 30 * * * », bug signalé en commentaire)13 / 21undetermined
22cron expression^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|\d+L?|\*(\/\d+)?|L(-\d+)?|\?|[A-Z]{3}(-[A-Z]{3})?) ?){5,7})$80GitHub Gist — synthèse communautaire des réponses du même fil (« credit to Juarez and Slava »), hérite du même défaut de position que la réponse à 80 votes14 / 21undetermined
23strong password^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$67Stack Overflow — réponse à 67 votes, non adaptée (plafond de 16 caractères conservé)19 / 20undetermined
24IBAN^[A-Z]{2}[0-9]{2}(?:[0-9]{4}){4}(?:[0-9]{1,2})?$65Stack Overflow — réponse à 65 votes, portée explicitement limitée à DE/AT/FR (4 groupes de 4 chiffres)11 / 20safe
25French phone number^(?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}$64Stack Overflow — réponse la plus votée (64 votes, Thomas Ayoub)20 / 22safe
26network port number^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$61Stack Overflow — forme historique de la réponse à 61 votes avant correction, acceptait « 0000 » (bug signalé en commentaire par elfan)16 / 20safe
27IPv6 address^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$59Stack Overflow — réponse à 59 votes, syntaxe PCRE récursive (groupes atomiques, sous-motifs numérotés)does not compile—
28Indian GSTIN (tax number)\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}[Z]{1}[A-Z\d]{1}58tk120404/gst (README, même regex que la réponse à 58 votes de Stack Overflow) — pas d'ancres : « XX27AAAPL1234C1ZE99 » passe ; aucun code d'État ni type de PAN contrôlé16 / 22safe
29French intra-EU VAT number^(FR)?[0-9A-Z]{2}[0-9]{9}$52Stack Overflow — réponse à 52 votes citant le Regular Expressions Cookbook, préfixe pays optionnel et lettres I/O non exclues21 / 24safe
30Canadian postal code^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$50Stack Overflow — réponse à 50 votes, correctement ancrée mais sans aucune exclusion de lettres (bug signalé en commentaire : accepte D/F/I/O/Q/U/W/Z n'importe où)16 / 20safe
31BIC / SWIFT code^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$40Stack Overflow — réponse à 40 votes de Mark Byers telle que postée, majuscules uniquement (limite reconnue par l'auteur lui-même dans sa réponse)18 / 20safe
32URL slug^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$36Stack Overflow — réponse la plus votée, 36 votes (user3427495) — autorise les majuscules20 / 22safe
33domain name (hostname)^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$34Stack Overflow — réponse la plus votée (34 votes), valide un dernier segment entièrement numérique (bug signalé en commentaire, contraire à la RFC 1912)20 / 23safe
34Spanish DNI/NIE^[XYZ][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$32Stack Overflow en español (32 votes) — restreint correctement aux 23 lettres valides, mais l'auteur précise lui-même que ça ne vérifie que le FORMAT : un DNI 12345678A passe cette regex alors que la lettre correcte est Z17 / 20safe
35Irish Eircode(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$31Stack Overflow (31 votes, réponse acceptée) — « ^ » n'ancre que la première alternative : « XD6W1234 » passe ; tiret accepté comme séparateur (« A65-F4E2 »), absent du format24 / 26safe
36Canadian postal code([ABCEGHJKLMNPRSTVWXYZ]\d){3}29Stack Overflow — réponse à 29 votes (validateur combiné US/CA), non ancrée, autorise W/Z en première position (bug signalé en commentaire)11 / 20safe
37hex color code^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$28Stack Overflow — réponse alternative, 28 votes (MSalters), capture RVB explicitement18 / 20safe
38Decimal GPS coordinates^([-+]?\d{1,2}([.]\d+)?),\s*([-+]?\d{1,3}([.]\d+)?)$22Stack Overflow — réponse à 22 votes, limite la latitude à 1-2 chiffres mais accepte encore « 99 » (signalé en commentaire : hors plage -90/+90)16 / 20safe
39IPv4 address in CIDR notation^([0-9]{1,3}\.){3}[0-9]{1,3}($|/(16|24))$17Stack Overflow — réponse à 17 votes, ancrage corrigé mais portée volontairement limitée à /16 et /24, aucune validation d'octet13 / 20safe
40URL slug^[a-z](-?[a-z])*$17Stack Overflow — 17 votes (Thibault Lemaire), bug signalé en commentaire par un autre utilisateur19 / 22safe
41cron expression^(\*|([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])|\*\/([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])) (\*|([0-9]|1[0-9]|2[0-3])|\*\/([0-9]|1[0-9]|2[0-3])) (\*|([1-9]|1[0-9]|2[0-9]|3[0-1])|\*\/([1-9]|1[0-9]|2[0-9]|3[0-1])) (\*|([1-9]|1[0-2])|\*\/([1-9]|1[0-2])) (\*|([0-6])|\*\/([0-6]))$16Stack Overflow — réponse à 16 votes, plages correctes par position mais rejette les listes séparées par virgules (bug signalé en commentaire sur « 0 3,15 * * * »)18 / 21safe
42web URL^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$15Stack Overflow — commentaire citant une regex Microsoft (page MSDN retirée), 15 votes11 / 20vulnerable
43Irish Eircode([AC-FHKNPRTV-Y]\d{2}|D6W)[0-9AC-FHKNPRTV-Y]{4}14Stack Overflow (14 votes) — ni ancres ni séparateur : « XD6W1234 » et « A65F4E2XYZ » passent, mais la forme officielle « A65 F4E2 » est rejetée18 / 26safe
44ISO 8601 timestamp^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])\.[0-9]{3}Z$14Stack Overflow — réponse à 14 votes (ferpel), jours par mois corrects mais ms/fuseau rigides12 / 20safe
45MAC address^([0-9A-Fa-f]{2}[:.-]?){5}[0-9A-Fa-f]{2}$12Stack Overflow — réponse « format Cisco » à 12 votes, séparateur optionnel indépendant par groupe (bug signalé en commentaire : accepte « aa.aa.bbbb.cccc »)16 / 20safe
46VIN (vehicle identification number)^[A-HJ-NPR-Z0-9]{17}$11Stack Overflow — réponse à 11 votes, aucune structure interne (qualifiée de « filet bien trop large » par une réponse concurrente sur le même fil)19 / 20safe
47MAC address^([0-9a-F]{1,2}[.:-]){5}([0-9a-F]{1,2})$9Stack Overflow — réponse à 9 votes, variante sans le drapeau /i, plage de caractères a-F invalide (ne compile pas en JavaScript)does not compile—
48US ZIP code (ZIP and ZIP+4)^\d{5}[-\s]?(?:\d{4})?$8Stack Overflow (8 votes) — séparateur et partie +4 tous deux facultatifs : « 12345- » ou « 12345 » suivi d'une espace passent, tout comme « 123451234 »19 / 24safe
49Czech postal code (PSČ)^(\d{5})$7Stack Overflow (7 votes, extrait d'un ancien fichier GeoNames) — 5 chiffres collés : rejette la forme canonique « 110 00 », accepte « 00000 » et « 99999 »14 / 22safe
50Dutch postal code^\d{4} ?[a-z]{2}$6Stack Overflow (6 votes) — n'exclut ni le zéro initial ni les paires SA, SD, SS : « 0123 AB » et « 1234 SS » passent20 / 26safe
51French phone number^((\+)33|0|0033)[1-9](\d{2}){4}$6Stack Overflow — variante sans séparateurs (6 votes, Hugo Trial)15 / 22safe
52French intra-EU VAT number^[A-Za-z]{2,4}(?=.{2,12}$)[-_\s0-9]*(?:[a-zA-Z][-_\s0-9]*){0,2}$5Stack Overflow — motif générique « simple » pour toute TVA de l'UE, 5 votes, non spécifique à la structure française18 / 24safe
53French postal code^(?:(?:0[1-9]|[13-8][0-9]|2[ab1-9]|9[0-5])(?:[0-9]{3})?|9[78][1-9](?:[0-9]{2})?)$4Stack Overflow — réponse de Toto, tente de gérer « 2A »/« 2B » (4 votes)18 / 21safe
54Irish Eircode^[AC-Y]{1}[0-9]{1}[0-9W]{1}[ \-]?[0-9AC-Y]{4}$4Stack Overflow (4 votes) — « [AC-Y] » autorise les lettres interdites G, I, J, L, M, O, Q, S, U : « A65 F4EO » et « A65 FIE2 » passent ; « [0-9W] » accepte « A6W ABCD »23 / 26safe
55GitHub @username mention\B@(?!.*(-){2,}.*)[a-z0-9](?:[a-z0-9-]{0,37}[a-z0-9])?\b4Stack Overflow — réponse à 4 votes, corrige le bug du pseudo à 1 caractère mais hérite du même lookahead scrutant tout le reste du texte18 / 20undetermined
56URL slug^[a-z][a-z\-]*[a-z]$4Stack Overflow — 4 votes (aelor), bug signalé par l'auteur de la question lui-même16 / 22safe
57Italian Codice Fiscale^([A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST]{1}[0-9LMNPQRSTUV]{2}[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]{1})$|([0-9]{11})$3Stack Overflow (3 votes) — restreint bien les lettres de mois valides, mais conserve une alternative « 11 chiffres » héritée des anciens codes numériques d'entreprise, source réelle de faux positifs18 / 20safe
58ISBN (ISBN-10 or ISBN-13)^ISBN:(\d{9}(?:\d|X))$3Stack Overflow — réponse à 3 votes, exige un préfixe littéral « ISBN: », rejette tout ISBN saisi seul11 / 20safe
59JWT (JSON Web Token)^eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/]*$3Stack Overflow — réponse à 3 votes, exige le préfixe littéral « eyJ » (signalé en commentaire comme non garanti pour tout JWT), et hérite du point erroné de la question dans la classe du 3e segment15 / 20safe
60currency amount^(?:USD\$)?-?(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d{1,2}){0,1}$3Stack Overflow — réponse à 3 votes (MikeM), ajoute le négatif et USD$ mais supprime par erreur le support du symbole $ seul (régression trouvée en testant le motif)17 / 20safe
61UK NINO^(?!BG|GB|KN|NK|NT|TN|ZZ)[^DFIQUV][^DFIQUVo][0-9]{6}[ABCD]$3regex101.com (3 votes) — les classes négées n'excluent que les lettres listées sans se restreindre aux lettres A-Z, un chiffre ou symbole en 1ère/2ème position passe18 / 21safe
62SIV license plate^(?!ss|ww)[a-hj-np-tv-z]{2}[ -]?[0-9]{3}[ -]?(?!ss)[a-hj-np-tv-z]{2}$3Stack Overflow — réponse de VisioN, 3 votes, « WW » non exclu sur le second groupe19 / 20safe
63Australian postcode^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$2Stack Overflow (2 votes) — plages énumérées à la main : oublie 2915-2999 et 7500-7799 (385 codes de plages attribuées) ; « ^ » et « $ » ne lient qu'une alternative chacun, « 20000 » passe21 / 28safe
64French postal code^(?:(?:(?:0[1-9]|[1-8]\d|9[0-4])(?:\d{3})?)|97[1-8]|98[4-9]|2[abAB])$2Stack Overflow — réponse de chris85, base du motif recommandé mais avec 2 bugs (2 votes)18 / 21safe
65Conventional Commits message^(feat|chore|fix|security|wip):[ ]?[A-Z0-9]+-[0-9]+.{3,}$2regex101.com (-2 votes, explicitement rejetée par la communauté) — liste de types tronquée et impose un format d'identifiant de ticket façon JIRA absent de la spec officielle13 / 21undetermined
66ABA routing number^[012346789][0-9]{8}$2Stack Overflow (2 votes) — exclut seulement le chiffre 5 en tête, sans aucune vérification de somme de contrôle ; la question elle-même naît d'une confusion sur un numéro réel de Bank of America20 / 20safe
67French APE/NAF business activity code(\d{4}[a-zA-Z]{1}|\d{2}[.]\d{2}[a-zA-Z]{1})1regex101.com, bibliothèque communautaire « French code ape » (1 vote) — non ancrée, accepte aussi n'importe quelle lettre de A à Z13 / 22safe
68Swiss postal code (PLZ/NPA)^(?:[1-9]\d{3}|\d{5})$1Stack Overflow (1 vote) — une regex commune à la Suisse et à l'Allemagne : « 12345 » passe, un code allemand à 5 chiffres16 / 23safe
69ISRC[A-Z]{2}[A-Z0-9]{3}[0-9]{7}1Microsoft Q&A (1 vote utile) — non ancrée, matche n'importe quel sous-segment de 12 caractères à l'intérieur d'une chaîne plus longue15 / 20safe
70US SSN(?!(\d){3}(\-| |)\1{2}\2\1{4})(?!666|000|9\d{2})(\b\d{3}(\-| |)(?!00)\d{2}\4(?!0{4})\d{4}\b)0regex101.com, « Comprehensive US SSN » (0 vote) — ajoute par rétro-référence une règle inventée rejetant les chiffres répétés, absente de toute règle officielle SSA18 / 20safe