验证身份证号码 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
开始
我正在研究这种验证学号的方法。身份证号码的凭据是;第一个字符必须是 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