身份证号码验证

本文关键字:验证 号码 身份证 | 更新日期: 2023-09-27 18:11:50

我想验证我的小型申请的国民身份证号码。

There are only 9 digits
there is a letter at the end 'x' or 'v' (both capital and simple letters)
3rd digit can not be equal to 4 or 9

如何使用 Visual Studio 2010 对此进行验证? 我可以使用正则表达式来验证这一点吗?

身份证号码验证

您可以在没有正则表达式的情况下执行此操作,例如:

string str = "124456789X";
if ((str.Count(char.IsDigit) == 9) && // only 9 digits
    (str.EndsWith("X", StringComparison.OrdinalIgnoreCase)
     || str.EndsWith("V", StringComparison.OrdinalIgnoreCase)) && //a letter at the end 'x' or 'v'
    (str[2] != '4' && str[2] != '9')) //3rd digit can not be equal to 4 or 9
{
    //Valid
}
else
{
    //invalid
}

斯里兰卡 NIC 验证 - JavaScript

旧 NIC 格式 - 例如:"641042757V">

/^[0-9]{9}[vVxX]$/

新的网卡格式 - 例如:"196410402757"(第 8 位必须为 0(

/^[0-9]{7}[0][0-9]{4}$/

你可以试试这个

 if ((ID.Count(char.IsDigit) == 9) && (ID.EndsWith("X") || ID.EndsWith("V")) && 
    (ID[2] != '4' && ID[2] != '9'))) 
                {
                    //Valid
                }
                else
                {
                    //invalid
                }

我将指导您为此构建正则表达式,但我实际上不会为您执行此操作。
从空白正则表达式开始:

-------------

您希望末尾出现"X"或"V">

------(X or V)

正面两位数

(2 digits)--------(X or V)

非 4 位或 9 位

数字
(2 digits)(digit not 4 or 9)-----(X or V)

还有 6 位数字

(2 digits)(digit not 4 or 9)(6 digits)(X or V)
**Sri Lankan NIC Validation**

$("input[name='number']").on('keydown', function(e) {
    var key = e.keyCode ? e.keyCode : e.which;
    //alert(key);
    if (!([8, 9, 13, 27, 46, 110, 190,17, 88, 89].indexOf(key) !== -1 ||
            (key == 65 && (e.ctrlKey || e.metaKey)) ||
            (key >= 35 && key <= 40) ||
            (key >= 48 && key <= 57 && !(e.shiftKey || e.altKey)) ||
            (key >= 96 && key <= 105)
        )) e.preventDefault();
});

Sriankan NIC Validation - JavaScript 正则表达式(ECMAScripts(

较旧的 NIC 格式 - 例如:"952521381V">

  1. 包含 9 位数字和 1 个字母

  2. 第 3 位数字不等于"4"和"9">

  3. 9 位数字后,包含 v 或 x

    ^''d{2}(?:[0-35-8]''d''d(?<!(?:000|500|36[7-9]|3[7-9]''d|86[7-9]|8[7-9]''d(((''d{4}(?:[vVxX]($

新的网卡格式 - 例如:"199525201381">

  1. 包含 9 位数字

  2. 第 5 位数字不等于"4"和"9">

  3. 第 8 位数字等于"0">

  4. 只有数字不包含字母

    ^(?:19|20(?''d{2}(?:[0-35-8]''d''d(?<!(?:000|500|36[7-9]|3[7-9]''d|86[7-9]|8[7-9]''d((([0]''d?''d{4}$

  • 为了更好地解释,请测试正则表达式 regex101.com

https://regex101.com/

最近有两种类型的 NIC 编号模式。新 NIC 只有 12 位数字组合,旧 NIC 有 9 位数字与 X、V 或 x、v 组合。因此,我们必须分别检查每个NIC模式。在这里,我为新 NIC 验证和旧 NIC 验证添加了单独的逻辑。

用于旧网卡验证

public static bool validateNICOld(String nic) {
    int length = nic.length();
    if ((length != 10)) {
        return false;
    } else {
        char lastChar = nic.charAt((length - 1));
        String lastCharacter = String.valueOf(lastChar);
        if ((lastCharacter.equalsIgnoreCase("v") || lastCharacter.equalsIgnoreCase("x"))) {
            String number = nic.substring(0, (length - 1));
            Log.d("NUmber", number);
            return !number.trim().matches("/^[0-9]{9}/");
        } else {
            for (int i = 0; (i
                    < (length - 2)); i++) {
                char currentChar = nic.charAt(i);
                if (((currentChar < '0') || ('9' < currentChar))) {
                    return false;
                }
            }
        }
    }
    return false;
}

对于新的网卡验证

 public static bool validateNICNew(String nic) {
    int length = nic.length();
    if ((length != 12)) {
        return false;
    } else {
        Log.d("NIC", nic);
        return !nic.trim().matches("/[0-9]{12}/");
    }
}

对于斯里兰卡的 nic,我们基本上有他们的 nic 格式类型这些是,

1(格式 - 例如:"952521381V">

2(格式 - 例如:"952521381X">

3(格式 - 例如:"199525201381">

为此,我们可以编写来验证一种和两种格式使用此正则表达式模式

 'd{9}[vVxX]$)

对于第三种格式,我们可以使用以下格式

(^'d{12}$

现在只需使用OR逻辑门简单地组合它

 public static bool Validate(string input)
{
    string pattern = @"(^'d{9}[vVxX]$)|(^'d{12}$)";
    return Regex.IsMatch(input, pattern);
}

享受