Регулярное выражение для SSN с использованием регулярных выражений
Мне нужно регулярное выражение для SSN, которое удовлетворяет следующему условию.
- Не может использовать или принять
666
в положениях 1-3 - Не может использовать или принять
000
в положениях 1-3 - Не может использовать или принять
00
в позициях 4-5 - Не может использовать или принять
0000
в позициях 6-9 - Если SSN начинается с
9
игнорировать все остальные условия.
заранее спасибо
1 ответ
Описание
Это регулярное выражение будет:
- проверить строку длиной 9 цифр
- если первая цифра не 9, проверьте следующее
- препятствует тому, чтобы положения 1,2 и 3 были всеми
6
- препятствует тому, чтобы положения 1,2 и 3 были всеми
0
- препятствует тому, чтобы положения 4 и 5 были всеми
0
- препятствует тому, чтобы позиции 6,7,8 и 9 были всеми
0
- препятствует тому, чтобы положения 1,2 и 3 были всеми
^(?:(?=[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
)
)