Регулярное выражение для SSN с использованием регулярных выражений

Мне нужно регулярное выражение для SSN, которое удовлетворяет следующему условию.

  1. Не может использовать или принять 666 в положениях 1-3
  2. Не может использовать или принять 000 в положениях 1-3
  3. Не может использовать или принять 00 в позициях 4-5
  4. Не может использовать или принять 0000 в позициях 6-9
  5. Если SSN начинается с 9 игнорировать все остальные условия.

заранее спасибо

1 ответ

Описание

Это регулярное выражение будет:

  • проверить строку длиной 9 цифр
  • если первая цифра не 9, проверьте следующее
    • препятствует тому, чтобы положения 1,2 и 3 были всеми 6
    • препятствует тому, чтобы положения 1,2 и 3 были всеми 0
    • препятствует тому, чтобы положения 4 и 5 были всеми 0
    • препятствует тому, чтобы позиции 6,7,8 и 9 были всеми 0

^(?:(?=[0-8])(?!666|000|.{3}00|.{5}0000)|(?=9))\d{9}(?:\r|\n|\Z)

Пример кода PHP

Вы не указали язык, поэтому я включил этот пример PHP, чтобы проиллюстрировать, как работает выражение

Ввод текста

000000000
000111111
111001111
111111111
222222222
333333333
444444444
555555555
666666666
666777777
777777777
888888888
999999999
123456789
123004567
123450000
923004567
923450000

Код

<?php
$sourcestring="your source string";
preg_match_all('/^(?:(?=[0-8])(?!666|000|.{3}00|.{5}0000)|(?=9))\d{9}(?:\r|\n|\Z)/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>

Матчи

$matches Array:
(
    [0] => Array
        (
            [0] => 111111111
            [1] => 222222222
            [2] => 333333333
            [3] => 444444444
            [4] => 555555555
            [5] => 777777777
            [6] => 888888888
            [7] => 999999999
            [8] => 123456789
            [9] => 923004567
            [10] => 923450000
        )

)
Другие вопросы по тегам