2013-06-21 66 views
-1

我需要SSN的正则表达式满足以下condion。正则表达式使用正则表达式的SSN

  1. 不能使用或位置接受666 1-3
  2. 不能使用或位置接受000 1-3
  3. 不能使用或接受位置00 4-5
  4. 不能使用或接受0000在职位6-9
  5. 如果SSN以9开头忽略所有其他条件。

预先感谢

+0

你使用什么样的正则表达式? – HamZa

回答

1

说明

此正则表达式将:

  • 验证串是9位数字长
  • 如果第一个数字是不是9然后检查以下
    • 防止位置1,2,一个d 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)

enter image description here

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 
     ) 

)