- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
工作中需要用到身份证验证,还要支持检查15位和18位。 我一时手懒,问同事有没有现成的函数可用,同事google了一下,扔给我一个 asp-vbscript版本的函数。 可我这边是客户端javascript呀,于是用改 vbs-->js 改完发现蛮好用的,同时发现 vbscript真的很啰嗦,居然写了50多行,我改成js 只用了11行。 当然,我并完全是指vbscript啰嗦,那个写这段vbs代码的无名氏也是个唐僧性格..... 先放出 vbscript代码, 。
复制代码 代码如下
<script language="vbscript"> '功能:检查身份证号码 Function CheckCardId(e) arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",") Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",") Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",") If Len(e) < 15 Or Len(e) = 16 Or Len(e) = 17 Or Len(e) > 18 Then CheckCardId= "身份证号共有 15 码或18位" CheckCardId = False Exit Function End If Dim Ai If Len(e) = 18 Then Ai = Mid(e, 1, 17) ElseIf Len(e) = 15 Then Ai = e Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9) End If If Not IsNumeric(Ai) Then CheckCardId= "身份证除最后一位外,必须为数字!" Exit Function End If Dim strYear, strMonth, strDay strYear = CInt(Mid(Ai, 7, 4)) strMonth = CInt(Mid(Ai, 11, 2)) strDay = CInt(Mid(Ai, 13, 2)) BirthDay = Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay) If IsDate(BirthDay) Then If DateDiff("yyyy",Now,BirthDay)<-140 or cdate(BirthDay)>date() Then CheckCardId= "身份证输入错误!" Exit Function End If If strMonth > 12 Or strDay > 31 Then CheckCardId= "身份证输入错误!" Exit Function End If Else CheckCardId= "身份证输入错误!" Exit Function End If Dim i, TotalmulAiWi For i = 0 To 16 TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i) Next Dim modValue modValue = TotalmulAiWi Mod 11 Dim strVerifyCode strVerifyCode = arrVerifyCode(modValue) Ai = Ai & strVerifyCode CheckCardId = Ai If Len(e) = 18 And e <> Ai Then CheckCardId= "身份证输入错误!" Exit Function End If End Function </script> 。
再放出 javascript版本代码 。
复制代码 代码如下
function checkId(pId){ //检查身份证号码 Go_Rush(阿舜) from http://ashun.cnblogs.com var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2]; var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; var Checker = [1,9,8,7,6,5,4,3,2,1,1]; if(pId.length != 15 && pId.length != 18) return "身份证号共有 15 码或18位"; var Ai=pId.length==18 ? pId.substring(0,17) : pId.slice(0,6)+"19"+pId.slice(6,16); if (!/^\d+$/.test(Ai)) return "身份证除最后一位外,必须为数字!"; var yyyy=Ai.slice(6,10) , mm=Ai.slice(10,12)-1 , dd=Ai.slice(12,14); var d=new Date(yyyy,mm,dd) , now=new Date(); var year=d.getFullYear() , mon=d.getMonth() , day=d.getDate(); if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) return "身份证输入错误!"; for(var i=0,ret=0;i<17;i++) ret+=Ai.charAt(i)*Wi[i]; Ai+=arrVerifyCode[ret %=11]; return pId.length ==18 && pId != Ai?"身份证输入错误!":Ai; }; 。
至于身份证算法的原理,请参阅: http://www.google.com/ 最后,根据身份证号码取 省份,生日,性别就很简单了 。
复制代码 代码如下
<script language="javascript"> var id="342201570202003" //根据身份证取 省份,生日,性别 Go_Rush(阿舜) from http://ashun.cnblogs.com/ function getInfo(id){ var arr=[null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古" ,null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海" ,"江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南" ,null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃" ,"青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null ,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外"] id=checkId(id) if (isNaN(id)) return "错误的身份证号码" var id=String(id), prov=arr[id.slice(0,2)] , sex=id.slice(14,17)%2? "男" : "女" var birthday=(new Date(id.slice(6,10) , id.slice(10,12)-1 , id.slice(12,14))).toLocaleDateString() return [prov,birthday,sex] } alert(getInfo(id)) </script> 。
上面的代码只能取到省份,要取到具体城市,请看我的另外一个随笔, 代码只拿我和几个同事的身份证号码测了一下,如果有Bug,请指出 。
最后此篇关于vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别的文章就讲到这里了,如果你想了解更多关于vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
以下是场景:我有一个可通过移动浏览器访问的网络应用程序。每当用户单击通过网络浏览器访问的应用程序页面中的链接时,我需要检测移动设备 IMEI 和 sim IMSI。这是为了跟踪具有相同 SIM 卡的同
场景如下:我有一个可通过移动浏览器访问的 Web 应用程序。每当用户单击可通过网络浏览器访问的我的应用程序页面中的链接时,我都需要检测移动设备的 IMEI 和 sim IMSI。这是为了跟踪具有相同
我需要在 Phonegap 为 Android 构建 HTML 移动 Web 应用程序中获取 IMEI 号码、手机号码、SIM 号码 最佳答案 你不能直接得到它们。 选项 1) 寻找一些插件,我不确定
我有一个输入框。它可能包含名称或数字。 如果输入至少有一个字母,我们将其作为名称处理,并且其长度应为 11 或更短。因此有效输入可能是 Bob、12Bob 或 Bob23。不允许有空格或其他字符,因此
我有这个要求:从客户表中 - 返回电话号码的前缀。我尝试使用字符串,将全名拆分为名字/姓氏,但它仅适用于数字。完整的nb格式为(258)1231456 最佳答案 SELECT '(258) 12314
我正在开发一个应用程序,用户必须使用手机键盘调用电话并输入验证号码。 我希望能够检测他们输入的数字是否正确。电话系统无法访问有效号码列表,但它会根据算法(如信用卡号码)验证号码。 以下是一些要求: 一
我有一张城市交通卡。我需要知道卡的援助(应用程序标识符)号码是多少。根据 EMV Book 1,我必须使用 List of AIDs 方法(第 141 页)。但是如何呢? 我还有一个 ACR122U
我想使用 javascript 分解数组中的 VIN,可能使用正则表达式,然后使用某种循环... 以下是读取 VIN 的方法: http://forum.cardekho.com/topic/600-
Here我找到了一个非常有用的答案,展示了如何使用 Whatsapp 从网站发送预填充的消息。 我们可以对 Telegram 做同样的事情吗? 最佳答案 您可以尝试使用以下方式打开 Telegram
我需要帮助完成这段代码,以便应用程序在收到推送通知时显示角标(Badge)编号,我可以收到推送通知,但应用程序上没有角标(Badge),这是代码 func application(_ applica
我正在使用 Twilio 进行入站调用,用户可以通过 Twilio-Number(从 Twilio 获得)调用应用程序并将被重定向到管理员。 现在,我们希望管理员使用相同的 Twilio 号码调用用户
C#/.NET 2.0 我需要解析一个字符串,其中包含街道名称和房屋编号的两个独立值。 in: "Streetname 1a" out: "streetname" "1a"
正如你们可能建议的那样,我正在创建一个带有语音命令的 SIRI。现在我确实想添加一个调用功能。例如我有这段代码: Intent call = new Intent(Intent.ACTION_DIAL
我想构建一个 android 应用程序,当设备第一次启动时,它会检测 IMEI 和其他设备信息,并检查是否有 SIM 卡。如果有 SIM 卡,它会发送短信包含特定号码的 IMEI 和其他设备信息。 我
我有这个对象: a = {"formData": { "total": "60.00", "tr0_RTN": "PZH", "tr0_amount": "10.00",
我正在制作一个测试工具,我有 imei 号码,但是否可以简单地或通过 NDK 更改 imei 号码。 谢谢 最佳答案 如何更改 IMEI 取决于硬件/系统,并且它是 - 至少在世界的(大部分)部分 -
我有一个表,其中有子项和父项,父项的 pid 为 0,子项的 pid 为父项的 id。我想选择父级及其子级数。 我的模型: function parent_child() {
抱歉,因为我从 android 开发跳到 IOS 开发,我想知道收到通知时是否有任何函数会触发?或者我应该如何处理通知? 这是我应用中的应用委托(delegate)。问题是每当收到消息时,如果应用程序
我正在开发应用程序,当它收到未接来电或来自手机的消息时自动发送消息。我的问题是当我从私有(private)号码收到未接来电或从私有(private)号码或服务器收到消息时(way2sms,160/2,
我想检查从联系人那里得到的电话号码是手机号码还是固定电话号码。我试过使用正则表达式,但一切都是徒劳的..任何帮助都将非常感激 最佳答案 要按手机号码和固定电话过滤联系人,您需要在数据库中有标准代码列表
我是一名优秀的程序员,十分优秀!