原來SSN 係有兩個version:
A) Before 25th June, 2011
http://www.ssa.gov/employer/ssnweb.htm
B) After 25th June, 2011
http://www.ssa.gov/employer/randomization.html.
所以要原全正確的分析一定還要有發出日期 (issue date).
今天先說說 A) issued before 25th June, 2011.
Structure:
社會安全號碼是由九個數字組成的號碼,格式為「AAA-GG-SSSS」。號碼分為三個部份:
1) AAA 區域號碼(area number)是前三位數字, 通常是申請者指定的收件地址州份 或在1973年之前的核發該卡片的機構代碼. 目前,有效的社會安全號碼中,區域號碼不會超過社會安全局所指定的上限772
2) GG 群組號碼(group number)為中間的兩位數字。它們與地理區域或其他資料並沒有任何相關性,僅是為了將號碼平均分配所設計的。群組號碼的範圍從01至99,並不按照數字大小的順序發行。為了管理上的原因,群組號碼依照以下順序發行:
01至09的奇數
10至98的偶數
02至08的偶數
11至99的奇數
3) SSSS 序號(serial number)。它們僅代表數字上的序號,在群組內的範圍從0001至9999。
Validation Rules:
1) 一定是 格式 AAA-GG-SSSS , 11位長
2) 任何數字群組不得全為 「0」(000-##-####、##-00-####、###-##-0000)
3) 區域號碼 (AAA) 不能是 000, 666 或者900到999
4) June 25, 2011之前區域號碼 (AAA)不得超過772
5) 不能落在 987-65-4320 到 987-65-4329 中 (保留作為廣告宣傳使用)
6) 社會安全局發佈了與區域號碼對應的最大群組號碼列表。由於群組號碼是依照一定的順序發行,因此可以藉由無效的群組號碼來辨識不合法的社會安全號碼。
http://www.socialsecurity.gov/employer/ssnvhighgroup.htm
Regular Expressions:
a) 以 Rules 1) 為標準:
^(\d{3}-?\d{2}-?\d{4}|XXX-XX-XXXX)$
b) 以 Rules 1), 2), 3), 4) 為標準
^(?!(000|666))([0-6]\d{2}|7([0-6]\d|7[012]))-(?!00)\d{2}-(?!0000)\d{4}$
至於 5), 6) 就只好自行寫Code 了.
No comments:
Post a Comment