44 votes

Regex SSN pour 123-45-6789 OU XXX-XX-XXXX

Quelqu'un peut-il me fournir un regex pour le SSN qui correspond soit

123-45-6789

OU

XXX-XX-XXXX

J'ai actuellement ^\d{3}-?\d{2}-?\d{4}$ qui correspond à la première expression, mais je dois ajouter la deuxième expression à cela comme alternative.

Merci ! Merci !

58voto

splash Points 8499

Pour répondre strictement à votre question :

^(123-45-6789|XXX-XX-XXXX)$

shoud work. ;-)

Si vous lisez la section "Valid SSNs" sur l'article SSN de Wikipédia, il devient clair qu'un regex pour la validation SSN est un peu plus compliqué.

En conséquence, un regex SSN pur un peu plus précis ressemblerait à ceci :

^(?!(000|666|9))\d{3}-(?!00)\d{2}-(?!0000)\d{4}$

42voto

Lazarus Points 17526

(^\d{3}-?\d{2}-?\d{4}$|^XXX-XX-XXXX$) devrait le faire.

---- ÉDITER ----

Comme le souligne Joël, vous pouvez également faire ^(\d{3}-?\d{2}-?\d{4}|XXX-XX-XXXX)$ ce qui est un peu plus soigné.

2voto

動靜能量 Points 33008

Ensuite, il peut être

/^[\dX]{3}-?[\dX]{2}-?[\dX]{4}$/

si vous souhaitez que x soit également valide, vous pouvez ajouter le modificateur i à la fin :

/^[\dX]{3}-?[\dX]{2}-?[\dX]{4}$/i

Après mûre réflexion, le regex ci-dessus acceptera

123-xx-xxxx

ainsi, selon que vous voulez que ce formulaire soit accepté ou non, vous pouvez utiliser votre formulaire original "ou" l'autre formulaire :

/^(\d{3}-?\d{2}-?\d{4})|(xxx-xx-xxxx)$/i

1voto

jbremnant Points 394

Une correspondance plus générique serait :

(^[^-]{3}-?[^-]{3}-?[^-]{4}$)

Cela correspondrait à n'importe quelle séquence de caractères autre que "-" dans la configuration 3-3-4 char. Par exemple :

my @str = qw/
  1adfasdfa
  adsfaouaosd90890
  111-232-adafd
  xXX-232-1234
  111-222-4444
  $$%-AF#-131@
/;

foreach(@str)
{
  print "$_\n" if /^[^-]{3}-?[^-]{3}-?[^-]{4}$/;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X