区分SSN和EIN之间的US TIN的算法

时间:2013-06-09 00:27:27

标签: php regex

美国的纳税人必须拥有某种税号。

它必须是Social Security NumberIndividual Taxpayer Identification Number(对于外国人来说,这样他们可以在不被驱逐的情况下征税)

或公司的Employer Identification Number

如果您按照这些指向维基百科的链接,很容易看出这些数字中存在(或者在社会安全号码的情况下)相当多的结构。这么多,你可以often guess a social if you have region and birthdate。有一个php librarysnippets来生成和验证利用这些模式的SSN。

鉴于数据库中充满了SSN和EIN,是否存在可以区分和验证SSN EIN和ITIN的预先存在的算法(希望是库)?我希望这里有一个简单的正则表达式,但这可能太有希望了。

有些公司可以通过一些可靠性来实现这一目标,但我还没有找到一个公开的实现,更不用说有一些数据显示它在验证过程中的可靠性。

1 个答案:

答案 0 :(得分:2)

有一个PHP library for SSNs,但最后一次更新时间是2013年。它严重依赖于High Group List,现在不再使用SSNs are randomized

我不知道有任何处理SSN,ITIN和EIN的库。您可能需要咨询this Django field for SSNs以获取有关仅验证SSN的复杂性的信息。多年来,一些复杂性来自SSN abuse,导致某些数字无效,使得正则表达式非常具有挑战性,并且一个简单的正则表达式是不可能的。

ITINs must start with 9,但在2013年,美国国税局改变了哪些范围有效。否则,它们看起来就像SSN一样。

EIN和SSN之间只有两个不同之处。首先,EIN分组为xx-xxxxxxx,SSN为xxx-xx-xxxx。第二个是有valid prefixes for EINs的列表,因此如果呈现的EIN没有有效的前缀,则可以确定它是无效的。 EIN也曾经更具地理性,但已经集中化,消除了这种地理意义。最终,区分EIN和SSN的唯一方法是,如果您需要使用短划线格式化,则验证前缀。