验证身份证_校验身份证号

2020-02-28 其他范文 下载本文

验证身份证由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“校验身份证号”。

/*-----------------

* 函数名称:Boolean gf_check_identity(string as_identity)

* 函数功能: 验证身份证号输入的正确性

* 参数说明: stringas_identity身份证号

* 返 回 值: True成功

*False 失败

* 调用举例: gf_check_identity('***')

* 尚未完善:没有对身份证号码的第18位校验位进行判断。因为我暂时没有找到第18位 *的校验算法,等找到了我再加上。应该比较简单。

* 修改日期: 2001-6-20

* 修 改 人: 郭保利

*------------------

* 修 改 人: 江松华Date: 2006.07.13

*------------------

* 修改内容:

*增加了对身份证号码第18位数的验证功能。

*------------------*/

String ls_identity_no

String ls_year,ls_month,ls_day,ls_date

String ls_today

Long ll_year

Long ll_identity_no_len

ls_identity_no = as_identity

ls_today = String(Today(),'yyyy/mm/dd')

ll_identity_no_len = Len(ls_identity_no)

IF ls_identity_no = ''THEN

MeageBox(“系统提示”,“身份证号码不能为空!”,StopSign!,ok!)

RETURN FALSE

ELSEIF ll_identity_no_len 15 AND ll_identity_no_len 18 THEN

MeageBox(“系统提示”,“身份证号码位数不足,请检查输入情况!”,StopSign!,ok!)RETURN FALSE

END IF

IF ll_identity_no_len = 15 THEN //身份证为 15 处理,认为15位的年 = 19**

ls_year = Mid(ls_identity_no, 7, 2)

ls_month = Mid(ls_identity_no, 9, 2)

ls_day = Mid(ls_identity_no, 11, 2)

ls_year = '19' + ls_year //year is only 20 century

ls_date = ls_year +'/' + ls_month +'/' + ls_day

ELSE

ls_year = Mid(ls_identity_no, 7, 4)

IF Left(ls_year,2)'19' AND Left(ls_year,2)'20' THEN

MeageBox(“系统提示”,“身份证号码中的出生年份不正确, 请您重新输入!”,StopSign!,ok!)RETURN FALSE

END IF

ls_month = Mid(ls_identity_no, 11, 2)

ls_day = Mid(ls_identity_no, 13, 2)

ls_date = ls_year +'/' + ls_month +'/' + ls_day

END IF

IF ls_month > '12' THEN

MeageBox(“系统提示”,“身份证号码中的出生月份大于12, 请您重新输入!”,StopSign!,ok!)

RETURN FALSE

ELSEIF ls_month

MeageBox(“系统提示”,“身份证号码中的出生月份小于01, 请您重新输入!”,StopSign!,ok!)

RETURN FALSE

END IF

IF ls_day

MeageBox(“系统提示”,“身份证号码的出生日小于01, 请您重新输入!”,StopSign!,ok!)

RETURN FALSE

END IF

CHOOSE CASE ls_month

CASE '01','03','05','07','08','10','12' //大月的处理

IF ls_day > '31' THEN

MeageBox(“系统提示”,“身份证号码的出生日大于31, 请您重新输入!”,StopSign!,ok!)

RETURN FALSE

END IF

CASE '04','06','05','09','11' //小月的处理

IF ls_day > '30' THEN

MeageBox(“系统提示”,“身份证号码的出生日大于30, 请您重新输入!”,StopSign!,ok!)

RETURN FALSE

END IF

CASE '02' //平年和闰年的处理

ll_year = Long(ls_year)

If(Mod(ll_year,4)= 0 AND Mod(ll_year,100)0)Or(Mod(ll_year,400)= 0)THEN //闰年,二月份不能多于29天

IF ls_day > '29' THEN

MeageBox(“系统提示”,“闰年的二月份没有” + ls_day + “日,请重新输入出生日期!”,StopSign!,ok!)RETURN FALSE

END IF

ELSE //平年二月份不能大于28天

IF ls_day > '28' THEN

MeageBox(“系统提示”,“平年的二月份没有” + ls_day + “日,请重新输入出生日期!”,StopSign!,ok!)RETURN FALSE

END IF

END IF

END CHOOSE

IF ls_date > ls_today THEN

MeageBox(“系统提示”,“身份证号码的出生日期小于登记日期,不合理请您重新输入!”,StopSign!,ok!)

RETURN FALSE

END IF

//====================== // 对身份证第18位进行验证

//====================== Integer li_idh[] // 用来保存18位身份证中前17位号码

Integer li_w[]// 保存与17位身份证计算的17个因数

String ls_y[]// 保存身份证前17位计算后对应的最后一位数

Integer li_len, li_sum, li_y

li_w[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}

ls_y[] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}

IF ll_identity_no_len = 18 THEN

FOR li_len = 1 TO 17

li_idh[li_len] = Integer(Mid(ls_identity_no, li_len, 1))

li_sum += li_idh[li_len] * li_w[li_len]

NEXT

li_y = Mod(li_sum, 11)+ 1 // 总数对11求模

IF ls_y[li_y] Upper(Right(ls_identity_no,1))THEN

MeageBox(“系统提示”,“身份证号码的最后一位验证没有通过,请检查!”, StopSign!, ok!)RETURN FALSE

END IF

END IF

RETURN TRUE

《验证身份证.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
验证身份证
点击下载文档
相关专题 校验身份证号 身份证 校验身份证号 身份证
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文