验证身份证号码 C#

Validating ID Number C#

我正在研究这种验证学号的方法。身份证号码的凭据是;第一个字符必须是 9,第二个字符必须是 0,不能有任何字母,数字必须是 9 个字符长。如果学生 ID 有效,该方法将 return 为真。当我通过 main 手动测试该方法时,结果为真,即使我输入了错误的输入。在我的代码中,我嵌套了 if 语句,但我最初并没有嵌套它们。什么是验证输入以与 ID 号凭证保持一致的更好方法?将字符串转换成数组会不会更理想?

 public static bool ValidateStudentId(string stdntId)
        {
            string compare = "123456789";
            if (stdntId.StartsWith("8"))
            {
                if (stdntId.StartsWith("91"))
                {
                    if (Regex.IsMatch(stdntId, @"^[a-zA-Z]+$"))
                    {
                        if (stdntId.Length > compare.Length)
                        {
                            if (stdntId.Length < compare.Length)
                            {
                                return false;
                            }
                        }
                    }
                }
            }

你可以试试正则表达式:

public static bool ValidateStudentId(string stdntId) => stdntId != null &&
  Regex.IsMatch(stdntId, "^90[0-9]{7}$");

模式说明:

  ^        - anchor - string start 
  90       - digits 9 and 0
  [0-9]{7} - exactly 7 digits (each in [0..9] range) 
  $        - anchor - string end

所以我们总共有 9 位(90 前缀 - 2 位 + 7 位任意位),从 90

开始