沙特 Iqama/National 身份证号码字段验证

Saudi Iqama/National Identity number field validation

有人可以帮我确定沙特 iqama/National 身份证号码的现场验证标准吗?

我知道对于国民来说它应该以 1 开头,对于外籍人士来说,它应该以 2 开头并且长度应该是 10.Anything 其他。这是针对已经看到一些错误的传入数据产生错误的应用程序,所以不想冒险。提前致谢。

Saudi ID Number – 1058529940  
Position 1 2 3 4 5 6 7 8 9 10   
ID Nbr   1 0 5 8 5 2 9 9 4 0   
Multiply 2 0 1 8 1 2 9 9 8   
Summate 40  

验证位置 10(值 0)= 10 – 数字 2
总和(0) = 减法位数 2

例如身份证号码 = 1001244019

Position 1 2 3 4 5 6 7 8 9 10  
ID Nbr   1 0 0 1 2 4 4 0 1 9   
Multiply 2 0 0 1 4 4 8 0 2   
Summate 21   

验证位置 10(值 9)= 10 – 数字 2
总和 (1)

For (Id Type='National Id') ✓ length = 10 , Id Number 必须以位置 1 的 '1' 开头。将每个数字乘以奇数位置(位置 1,3,5.. 9) 乘以 2。如果乘法产生一个 2 位数字,则将这 2 个数字相加得到一个数字。将 ID 号的前 9 个字符相加(post 乘法)以产生一个 2 位数字 (XY)。如果身份证号码的第10位等于“零”,则前9个字符的总和中第2位(Y)的数字减去10得到2位(ZN),(N)应等于身份证号码的第 10 位数字。否则,身份证号码的第 10 位应等于 10 减去前 9 个字符的总和中位置 2(Y)中的数字。

尝试使用正则表达式进行验证。 ^[1|2]{1}[0-9]{9}$ 这对我有用。

或者,如果您正在寻找检查 ID 是否正确的代码,请查看此 GitHub 存储库:https://github.com/alhazmy13/Saudi-ID-Validator。它是用不同的编程语言编写的,它会检查国民身份证和居住证