将验证 NIPC / NIF 的算法转换为 C# Regex(正则表达式)
Convert algorithm to validate NIPC / NIF into a C# Regex (Regular Expression)
我有下一个简单的算法来验证葡萄牙的 NIPC / NIF 标识:
private bool IsNIPCCorrect(String nifString)
{
int controlDigit = 0;
for (int i = 0; i < nifString.Length - 1; i++)
{
controlDigit += (int)Char.GetNumericValue(nifString[i]) * (10 - i - 1);
};
controlDigit = controlDigit % 11;
if (controlDigit <= 1)
{
controlDigit = 0;
}
else
{
controlDigit = 11 - controlDigit;
}
if (controlDigit == (int)Char.GetNumericValue(nifString[8]))
{
return true;
}
else
{
return false;
}
}
我想知道我是否可以生成一个小正则表达式来在几行中验证该标识。
初始验证:
- 长度:9 位数
- 控制位:nifString[8]
验证方式:
- sum = nifString[7] * 2 + nifString[6] * 3 + nifString[5] * 4 + nifString[4] * 5 + nifString[3] * 6 + nifString[2] * 7 + nifString [1] * 8 + nifString[0] * 9
- if(sum % 11 <= 1) controlDigit = 0
- else controlDigit = 11 - (sum % 11)
- 然后检查 if(controlDigit == nifString[8])
我一直在想下一个初始模式 = [0-9]{9}|\d{9}
但是我怎么也只能使用 Regex 进行最终验证呢?
此致!
正则表达式无法为您计算,但有合适的代码可以检查
反对第一个是 ^\d{9}$
您需要在 运行 其余代码之前进行此检查,就好像字符串中没有 9 个字符一样,您将在 nifString[8][=10= 处收到错误消息]
因此无效的 NIF 12345 会导致错误,而不是 return 的错误。
我有下一个简单的算法来验证葡萄牙的 NIPC / NIF 标识:
private bool IsNIPCCorrect(String nifString)
{
int controlDigit = 0;
for (int i = 0; i < nifString.Length - 1; i++)
{
controlDigit += (int)Char.GetNumericValue(nifString[i]) * (10 - i - 1);
};
controlDigit = controlDigit % 11;
if (controlDigit <= 1)
{
controlDigit = 0;
}
else
{
controlDigit = 11 - controlDigit;
}
if (controlDigit == (int)Char.GetNumericValue(nifString[8]))
{
return true;
}
else
{
return false;
}
}
我想知道我是否可以生成一个小正则表达式来在几行中验证该标识。
初始验证:
- 长度:9 位数
- 控制位:nifString[8]
验证方式:
- sum = nifString[7] * 2 + nifString[6] * 3 + nifString[5] * 4 + nifString[4] * 5 + nifString[3] * 6 + nifString[2] * 7 + nifString [1] * 8 + nifString[0] * 9
- if(sum % 11 <= 1) controlDigit = 0
- else controlDigit = 11 - (sum % 11)
- 然后检查 if(controlDigit == nifString[8])
我一直在想下一个初始模式 = [0-9]{9}|\d{9}
但是我怎么也只能使用 Regex 进行最终验证呢?
此致!
正则表达式无法为您计算,但有合适的代码可以检查 反对第一个是 ^\d{9}$
您需要在 运行 其余代码之前进行此检查,就好像字符串中没有 9 个字符一样,您将在 nifString[8][=10= 处收到错误消息]
因此无效的 NIF 12345 会导致错误,而不是 return 的错误。