蒂姆链接到格式说明 https://en.m.wikipedia.org/wiki/Employer_Identification_Number#EIN_format联邦纳税识别号 (EIN) 规定前两个数字可以是 83 个数字中的任意一个。剩下的数字可以是任何数字。因此,事实上,更容易制作一个捕获 07, 08, 09, 17, 18, 19, 28, 29, 49, 69, 70, 78, 79, 89, 96, 97 的负模式:
^(?![01][789]|2[89]|[46]9|7[089]|89|9[67])\d\d-\d{7}$
但这并不能捕获EIN11-1111111
or 22-2222222
:您可能想要捕获这些,因为它类似于人们填充表单字段的模式类型。您可以捕获这样的重复模式:
^(\d)\1-\1{7}$
但请注意:您无法确定它们无效。每一个11-1111111
, 22-2222222
, 33-3333333
等根据定义有效(因为 11、22、33 等)都是有效的计算机代码前缀。
因此,您最终会拒绝 EIN 合法的某人访问。
拥有 EIN 前缀白名单的缺点是,您的软件现在对数字列表具有外部依赖性,并且您的软件包管理器不会在立法发生变化时通知您。由于很难预测软件的生命周期,因此该程序最终可能会拒绝未来有效的 EIN。你必须在这里权衡一些成本;制作一个非常短的正则表达式可能不是您在这里可以实现的最好的事情。