身份证验证(正则表达式)

合集下载

js身份证正则表达式

js身份证正则表达式

js身份证正则表达式JS身份证正则表达式是程序开发领域中一种非常重要的技术工具,本文讨论的是使用JS正则表达式来验证中国的身份证号码。

身份证号码是一种全球通用的身份认证凭证,它被广泛应用于各种场合,例如用于报名参加考试,办理选民证明,办理社会保险等。

本文主要介绍了JS身份证正则表达式在验证身份证号码时的应用,以及如何根据身份证号码提取性别和出生日期等信息。

什么是JS身份证正则表达式?JS正则表达式是一种特殊的文本模式,可以用来检查字符串中的文本结构,匹配模式可以是单个字符、单词或者句子等。

正则表达式是一种强大的字符串处理工具,在编写程序时可以大大简化字符串处理任务。

可以用来匹配字符串中预定义的模式,也可以用来替换或删除文本中的特定字符。

JS中的正则表达式可以用来验证身份证号码的合法性,但要注意的是当地的身份证号码的格式有可能会有所差别,因此必须根据不同的地区形式来构建正则表达式,以确保正确性。

根据中华人民共和国公民身份号码的构成,全国的有效身份证号码格式为1-2位省或直辖市代码(市/州代码+县/区代码)+ 6位数出生日期+3位顺序码+1位校验码,例如:,其中,440881表示广东省深圳市,19830109表示出生日期,4232表示顺序码,顺序码可以为偶数或奇数,最后一位是校验码,根据公式校验码可以计算出。

下面的正则表达式可用于验证中国的身份证号码:`^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{ 5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$`上述正则表达式可以用来验证15位和18位身份证号码的合法性。

此正则表达式可以使用JS的match方法来验证输入的身份证号码是否符合指定格式,如果是,则返回true,否则返回false:if(id.match(/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3} $|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3} ([0-9]|X)$/))另外,还可以使用正则表达式来从身份证号码中提取出性别和出生日期信息。

Python正则表达式精确匹配手机号,邮箱,IP,身份证…..(爬虫利器)

Python正则表达式精确匹配手机号,邮箱,IP,身份证…..(爬虫利器)

Python正则表达式精确匹配手机号,邮箱,IP,身份证…..(爬虫利器)Python正则表达式大全1.检验手机号要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。

import redef verify_mobile():mob = input('请输入手机号码:')ret = re.match(r'1[358]d{9}', mob)if ret:print('手机号码匹配正确')else:print('匹配错误')verify_mobile()2.检验邮箱import redef verify_email():email = input('请输入邮箱:')ret = re.match(r'^[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+){0,4}$', email)if ret:print('邮箱匹配正确')else:print('匹配错误')verify_email()3.验证身份证import redef verify_card():card = input('请输入身份证:')ret = re.match(r'^([1-9]d{5}[12]d{3}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])d{3}(d|X|x))$', card)if ret:print('身份证匹配正确')else:print('匹配错误')verify_card()4.检验年月日import redef verify_date():date = input('请输入年月日:')ret = re.match(r'^(d{4}-d{1,2}-d{1,2})$', date)if ret:print('日期匹配正确')else:print('匹配错误')verify_date()5.验证数字表达式匹配数字:^[0-9]*$匹配n位的数字:^d{n}$匹配零和非零开头的数字:^(0|[1-9][0-9]*)$匹配正数、负数、和小数:^(-|+)?d+(.d+)?$匹配非零的正整数:^[1-9]d*$ 或^([1-9][0-9]*){1,3}$ 或^+?[1-9][0-9]*$匹配非零的负整数:^-[1-9][]0-9″*$ 或 ^-[1-9]d*$匹配非负整数:^d+$ 或 ^[1-9]d*|0$匹配非正整数:^-[1-9]d*|0$ 或 ^((-d+)|(0+))$匹配浮点数:^(-?d+)(.d+)?$ 或^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$匹配正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$匹配负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$匹配非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$匹配非负浮点数:^d+(.d+)?$ 或^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$6.验证字符表达式匹配汉字:^[一-龥]{0,}$匹配英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$匹配大写英文字母组成的字符串:^[A-Z]+$匹配小写英文字母组成的字符串:^[a-z]+$匹配大小写英文组成的字符串:^[A-Za-z]+$匹配中文、英文、数字包括下划线:^[一-龥A-Za-z0-9_]+$禁止输入含有~的字符:[^~x22]+x。

身份证正确检验及验证公式

身份证正确检验及验证公式

验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。

java对身份证验证及正则表达式解析

java对身份证验证及正则表达式解析

java对⾝份证验证及正则表达式解析原⽂地址:/zhongshengzhen/java对⾝份证验证及正则表达式解析package service;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.regex.Pattern;import org.junit.Test;public class TestRegex {public static boolean isChineseName(String realname){return Pattern.matches("[\u4e00-\u9fa5|·]{2,15}",realname);}public static boolean isCardId(String cardid){return Pattern.matches("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([\\d|x|X]{1})$", cardid);}public static String[] randomArray(int length){int index = 0;String temp = ",";for(int ii=0;ii<1000;ii++){for(int i=0;i<length;i++){index = (int) (Math.random()*10);temp += ( index + "");}temp +=",";}return temp.split(",");}//⾝份证前1位每位加权因⼦private static int[] power = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//⾝份证第18位校检码private static String[] refNumber ={"1", "0", "X", "9", "8", "7", "6", "5", "4", "3"};//省(直辖市)代码表private String provinceCode[] = { "11", "12", "13", "14", "15", "21", "22","23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43","44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63","64", "65", "71", "81", "82", "91" };/*** 检查⾝份证的省份信息是否正确(使⽤与18/15位⾝份证)* @param provinceid* @return*/public boolean checkProvinceId(String provinceid){for (String id : provinceCode) {if (id.equals(provinceid)) {return true;}}return false;}/*** 校验⾝份证第18位是否正确(只适合18位⾝份证)* @param cardId* @return*/public static boolean checkCardIdLastNum(String cardId){if(cardId.length() != 18){return false;}char[] tmp = cardId.toCharArray();int[] cardidArray = new int[tmp.length-1];int i=0;for(i=0;i<tmp.length-1;i++){cardidArray[i] = Integer.parseInt(tmp[i]+"");}String checkCode = sumPower(cardidArray);String lastNum = tmp[tmp.length-1] + "";if(lastNum.equals("x")){lastNum = lastNum.toUpperCase();}if(!checkCode.equals(lastNum)){return false;}return true;}/*** 计算⾝份证的第⼗⼋位校验码* @param cardidArray* @return*/public static String sumPower(int[] cardidArray){int result = 0;for(int i=0;i<power.length;i++){result += power[i] * cardidArray[i];}return refNumber[(result%11)];}/*** 判断⽇期是否有效* @param inDate* @return*/public boolean isValidDate(String inDate) {if (inDate == null){return false;}SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");if (inDate.trim().length() != dateFormat.toPattern().length()){return false;}dateFormat.setLenient(false);//严格的⽇期匹配try {dateFormat.parse(inDate.trim());} catch (ParseException e) {return false;}return true;}//@Testpublic void testName(){String[] array = {"钟·","在哪"};for(int i=0;i<array.length;i++){System.out.println(array[i]+":"+isChineseName(array[i]));}}////@Testpublic void testCardId(){String[] array = randomArray(18);int index = 0,sum =0;for(int i=0;i<array.length;i++){sum += 1;if(isCardId(array[i])){index += 1;}System.out.println(array[i]+":"+isCardId(array[i]));}double ret = index/sum;System.out.println(index+","+sum+","+ret);}//@Testpublic void testArray(){String[] array = randomArray(15);for(int i=0;i<array.length;i++){System.out.println(array[i]);}}//@Testpublic void testLastNum(){String[] cardId = {"440982199563272359","430102************"};for(int i=0;i<cardId.length;i++){System.out.println(cardId[i]+":"+checkCardIdLastNum(cardId[i]));}}//@Testpublic void testProcince(){String[] cardId = {"440982199563272359","430102************"};for(int i=0;i<cardId.length;i++){System.out.println(cardId[i].substring(0,2)+":"+checkProvinceId(cardId[i].substring(0,2))); }}@Testpublic void testDate(){//String[] cardId = {"440982************","430102************"};String cardId[] = {"445102************","131100************","510421************","340823************","340703************","440982************","130203************","321101************","340501************","330424************","610402************","230826************","350305************","450881************","220282************","341723************","451024************","330727************","411626************","230605************","210681************","511821************","622923************",};for(int i=0;i<cardId.length;i++){System.out.println(cardId[i].substring(6,14)+":"+isValidDate(cardId[i].substring(6,14))); }}}。

身份证号正则表达式-中文名-出生日期-电话号码-数字正则

身份证号正则表达式-中文名-出生日期-电话号码-数字正则

身份证号正则表达式-中文名-出生日期-电话号码-数字正则发布于 2015-02-24 16:47 分类:编程开发来源:本站阅读(204) 评论(0) 身份证号码正则private bool CheckIDCard(string Id){if (Id.Length == 18){bool check = CheckIDCard18(Id);return check;}else if (Id.Length == 15){bool check = CheckIDCard15(Id);return check;}else{return false;}}private bool CheckIDCard18(string Id){long n = 0;if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0' ).Replace('X', '0'), out n) == false){return false;//数字验证}string address = "11x22x35x44x53x12x23x36x45x54x13 x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82 x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证}string birth = Id.Substring(6, 8).Insert(6, "-") .Insert(4, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证}string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2") .Split(',');string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4, 2").Split(',');char[] Ai = Id.Remove(17).ToCharArray();int sum = 0;for (int i = 0; i < 17; i++){sum += int.Parse(Wi[i]) * int.Parse(Ai[i] .ToString());}int y = -1;Math.DivRem(sum, 11, out y);if (arrVarifyCode[y] != Id.Substring(17, 1).ToLow er()){return false;//校验码验证}return true;//符合GB11643-1999标准}private bool CheckIDCard15(string Id){long n = 0;if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14)){return false;//数字验证}string address = "11x22x35x44x53x12x23x36x45x54x13 x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82 x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证}string birth = Id.Substring(6, 6).Insert(4, "-") .Insert(2, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证}return true;//符合15位身份证标准}中文名字正则public bool IsZhName(string str_IsZhName){return System.Text.RegularExpressions.Regex.IsMatch( str_IsZhName, @"(^[\u4e00-\u9fa5]{2,4}$)");}出生日期正则private bool CheckDate(string Id){string birth = Id;DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证}return true;//符合GB11643-1999标准}电话号码正则--电话号码与手机号码同时验证public bool IsPhone(string str_IsPhoe){return System.Text.RegularExpressions.Regex.IsMatch( str_IsPhoe, @"(^(\d{3,4}-)?\d{7,8})$|(1[3-9][0-9]{9})$");}数字正则-判断是否为数字private static bool IsNumeric(string itemValue){return System.Text.RegularExpressions.Regex.IsMatch( itemValue, @"(^\d{8}$)");}日期计算函数protected double CheckDateDiff(DateTime dt1,DateTime dt2){DateTime t1 =dt1;DateTime t2 =dt2;System.TimeSpan ts = t2 - t1;double days = ts.TotalDays;return days;}。

C# winform中身份证的正则表达式

C# winform中身份证的正则表达式
该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获 得一个唯一的、不变的法定号码。 二、编码对象
公民身份号码的编码对象是具有中华人民共和国国籍的公民。 三、号码的结构和表示形式 1、号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至 右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码
}
System.Text.RegularExpressions.Match mc = rg.Match(cid);
if(!mc.Success)
{
return "";
}
cid = cid.ToLower();
cid = cid.Replace("x","a");
if(aCity[int.Parse(cid.Substring(0,2))]==null)
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T2260 的规定执行。 3、出生日期码
表示编码对象出生的年、月、日,按 GB/T7408 的规定执行,年、月、日代码之间不用 分隔符。 4、顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号, 顺序码的奇数分配给男性,偶数分配给女性。 5、校验码 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前 17 位数字的权求和
Ai:表示第 i 位置上的身份证号码数字值 Wi:表示第 i 位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)计算模 Y = mod(S, 11)

常用正则表达式,手机号、固话号、身份证号等

常用正则表达式,手机号、固话号、身份证号等

常⽤正则表达式,⼿机号、固话号、⾝份证号等⼿机号码正则表达式验证function checkPhone(){var phone = document.getElementById('phone').value;if(!(/^1[34578]\d{9}$/.test(phone))){alert("⼿机号码有误,请重填");return false;}}或者是function checkPhone(){var phone = document.getElementById('phone').value;if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){alert("⼿机号码有误,请重填");return false;}}注:⼩括号就是括号内看成⼀个整体 ,中括号就是匹配括号内的其中⼀个正则⾥⾯的中括号[]只能匹配其中⼀个,如果要匹配特定⼏组字符串的话,那就必须使⽤⼩括号()加或|,我还以为在中括号中也能使⽤或|符号,原来|在中括号⾥⾯也是⼀个字符,并不代表或。

[3457]匹配3或者4或者5或者7,⽽(3457)只匹配3457,若要跟前⾯⼀样可以加或(3|4|5|7)。

[34|57]匹配3或者4或者|或者5或者7.⽽(34|57)能匹配34或者57。

固定电话号码正则表达式:function checkTel(){var tel = document.getElementById('tel').value;if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel)){alert('固定电话有误,请重填');return false;}}⾝份证校验//⾝份证正则表达式(15位)isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//⾝份证正则表达式(18位)isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;⾝份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)提取信息中的⽹络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*提取信息中的图⽚链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}提取信息中的中国邮政编码:[1-9]{1}(\d+){5}提取信息中的中国⾝份证号码:\d{18}|\d{15}提取信息中的整数:\d+提取信息中的浮点数(即⼩数):(-?\d*)\.?\d+提取信息中的任何数字:(-?\d*)(\.\d+)?提取信息中的中⽂字符串:[\u4e00-\u9fa5]*提取信息中的双字节字符串 (汉字):[^\x00-\xff]*使⽤⽅法:test()⽅法在字符串中查找是否存在指定的正则表达式,并返回布尔值,如果存在则返回true,否则返回false。

前端正则校验规则

前端正则校验规则

前端正则校验规则
前端正则表达式校验规则如下:
1. 手机号格式验证: /^1[3-9]\d{9}$/;
2. 邮箱格式验证: /^[a-zA-Z0-9_-]+[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-
]+)+$/;
3. 密码强度验证:密码长度需在6-16位之间,且至少包含一位数字、一位大写字母和一位小写字母。

4. 身份证格式验证:中国身份证号码由15位或18位数字和大写英文字母
组成,其中18位身份证号码中的最后一位可以是数字或X。

5. 邮箱地址验证:邮箱地址应包含“”符号,且“”符号前后不能有空格或其他字符。

6. 数字验证:用于验证输入的内容是否为数字,可以指定一个范围,例如
0-999。

7. 英文大小写字母验证:用于验证输入的内容是否为英文大小写字母,可以指定一个范围,例如a-z或A-Z。

8. 中文字符验证:用于验证输入的内容是否为中文字符,可以指定一个范围,例如汉字。

9. 特殊字符验证:用于验证输入的内容是否包含特殊字符,例如!$%^&()等。

10. 日期格式验证:用于验证输入的日期格式是否正确,可以指定日期的格式,例如YYYY-MM-DD。

以上是一些常见的正则表达式校验规则,具体使用时需要根据实际需求进行调整和修改。

身份证正确检验及验证公式

身份证正确检验及验证公式

验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。

正则表达式-身份证号码验证

正则表达式-身份证号码验证

正则表达式-⾝份证号码验证⾝份证号码验证,包含两代⾝份证,第⼀代和第⼆代⾝份证第⼀代⾝份证15位,其编码规则顺序从左⾄右依次为6位数字地址码,6位数字出⽣年份后两位及⽇期,3位数字顺序码。

格式:^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$正则表达式分解如下:[1-9]\d{5}:前六位地区,⾮0开头\d{2} :出⽣年份后两位00-99((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}:顺序码三位,没有校验码第⼆代⾝份证18位,其编码规则顺序从左⾄右依次为6位数字地址码,8位数字出⽣年份⽇期码,3位数字顺序码,1位数字校验码(X有时会出现):格式: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$正则表达式分解如下:[1-9]\d{5} :前六位地区,⾮0开头(18|19|([23]\d))\d{2}:出⾝年份,覆盖范围为 1800-3999 年((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}[0-9Xx]:顺序码三位 + ⼀位校验码程序:private void BtnOK_Click(object sender, RoutedEventArgs e){if (string.IsNullOrEmpty(tbxName.Text)){MessageBox.Show($"姓名不可为空,请重新输⼊!");tbxName.Focus();return;}Name = tbxName.Text;Regex re = new Regex(@"(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)|(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)");if (re.IsMatch(tbxIDNumber.Text)){IDNumber = tbxIDNumber.Text;MessageBox.Show($"姓名:{Name},⾝份证号码:{IDNumber},符合规则");Close();}else{MessageBox.Show($"⾝份证号码格式不正确,请输⼊15或者18位的⾝份证号码。

JavaScript正则表达式验证身份证号码是否合法(两种方法)讲解

JavaScript正则表达式验证身份证号码是否合法(两种方法)讲解

JavaScript正则表达式验证身份证号码是否合法(两种方法)正则表达式(regular expression)是一个描述字符模式的对象。

下面通过本篇文章给大家介绍js正则表达式验证身份证号码是否合法,需要的朋友可以参考下本篇文章第一种方法:在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。

下面就此实现方法给大家讲解下。

很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息:1、号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

2、地址码(前六位数)表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。

3、出生日期码(第七位至十四位)表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。

4、顺序码(第十五位至十七位)表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

5、校验码(第十八位数)作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。

X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

在知道身份证号结构组成各部分的意思后,我们开始进入主题:1、定义一个全国地区的对象var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82: "澳门",91:"国外"}2、正则表达式判断第二种方法:6768697071727374757677787980818283848586位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为Xif(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;。

身份证号正则校验(js校验+JAVA校验)

身份证号正则校验(js校验+JAVA校验)

⾝份证号正则校验(js校验+JAVA校验)js校验⾝份证号【15位和18位】[javascript] view plaincopyprint?function scCard(){var scType=document.getElementById("sc_card_type").value;if(scType=="1"){var scCard=document.getElementById("sc_card_num").value;if(scCard.length!=0){if(!checkCard(scCard)){$("#errorTips").html("⾝份证号码格式错误");}else{$("#errorTips").html("");}}}return false;}//function checkidno(obj) {var vcity={ 11:"北京",12:"天津",13:"河北",14:"⼭西",15:"内蒙古",21:"辽宁",22:"吉林",23:"⿊龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"⼭东",41:"河南",42:"湖北",43:"湖南",44:"⼴东",45:"⼴西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"⽢肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"⾹港",82:"澳门",91:"国外"};checkCard = function(obj){//var card = document.getElementById('card_no').value;//是否为空// if(card === '')// {// return false;//}//校验长度,类型if(isCardNo(obj) === false){return false;}//检查省份if(checkProvince(obj) === false){return false;}//校验⽣⽇if(checkBirthday(obj) === false){return false;}//检验位的检测if(checkParity(obj) === false){return false;}return true;};//检查号码是否符合规范,包括长度,类型isCardNo = function(obj){//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符Xvar reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if(reg.test(obj) === false){return false;}return true;};//取⾝份证前两位,校验省份checkProvince = function(obj)var province = obj.substr(0,2);if(vcity[province] == undefined){return false;}return true;};//检查⽣⽇是否正确checkBirthday = function(obj){var len = obj.length;//⾝份证15位时,次序为省(3位)市(3位)年(2位)⽉(2位)⽇(2位)校验位(3位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//⾝份证18位时,次序为省(3位)市(3位)年(4位)⽉(2位)⽇(2位)校验位(4位),校验位末尾可能为X if(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;};//校验⽇期verifyBirthday = function(year,month,day,birthday){var now = new Date();var now_year = now.getFullYear();//年⽉⽇是否合理if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){//判断年份的范围(3岁到100岁之间)var time = now_year - year;if(time >= 0 && time <= 130){return true;}return false;}return false;};//校验位的检测checkParity = function(obj){//15位转18位obj = changeFivteenToEighteen(obj);var len = obj.length;if(len == '18'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i, valnum;for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == obj.substr(17, 1)){return true;}return false;}return false;};//15位转18位⾝份证号changeFivteenToEighteen = function(obj)if(obj.length == '15'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i;obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}obj += arrCh[cardTemp % 11];return obj;}return obj;};JAVA校验package com.ebiz.base.utils;import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.ebiz.base.consts.BaseConst;import com.ebiz.base.consts.ConfigConst;import com.ebiz.base.consts.ExceptionConst;import com.ebiz.framework.util.date.DateUtil;import com.ebiz.framework.util.date.DateValidate;import com.ebiz.framework.util.validate.ValidateUtil;import puta.FndPageRule;import com.hp.hpl.sparta.ParseException;public class CheckIdentificationUtil {public static void main(String[] args) {System.out.println(idCardValidate("370802*********"));}/**功能 18位⾝份证的校验* @param idStr* @return ParseException 1001* @throws Exception* @throws ParseException* @throws NumberFormatException* @throws java.text.ParseException* @author wangming*/public static String idCardValidate(String idStr) {if (idStr == null || ( idStr.length() != 15 && idStr.length() != 18 )) {return BaseConst.PUBLIC_RESPONSE_FAIL;}if( idStr.length() == 15 ){StringBuilder sb = new StringBuilder();sb.append(idStr.substring(0, 6)).append("19").append(idStr.substring(6));try {sb.append(getVerifyCode(sb.toString()));idStr = sb.toString();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(sb);}String errorInfo = "";// 记录错误信息//取模映射String[] valCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4","3", "2" };//加权String[] wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7","9", "10", "5", "8", "4", "2" }; String ai =idStr.substring(0, 17);if (ValidateUtil.isDigit(ai) == false) {errorInfo = ExceptionConst.PAXINFO_CARD_ISNOTNUM;return errorInfo;}// ================ 出⽣年⽉是否有效 ================String strYear = ai.substring(6, 10);// 年份String strMonth = ai.substring(10, 12);// ⽉份String strDay = ai.substring(12, 14);// ⽉份if (DateValidate.isStrDate(ai.substring(6,14))== false) {errorInfo = ExceptionConst.PAXINFO_CARD_BIRTHDAY_OVER;//"⾝份证⽣⽇⽆效。

正则表达式学习(一):身份证号码、护照,使用正则表达式验证

正则表达式学习(一):身份证号码、护照,使用正则表达式验证

正则表达式学习(⼀):⾝份证号码、护照,使⽤正则表达式验证⼀、基本语法:^--------匹配输⼊字符串的开始位置如:/^a/$--------匹配输⼊字符串的结束位置如:/y$/*--------匹配前⾯的⼦表达式零次或多次,等价于 {0,} 如:/zo*/与/zo{0,}/ 会匹配z、zo、zoo等。

+--------匹配前⾯的⼦表达式⼀次或多次,等价于 {1,} 如:/zo+/与/zo{1,}/ 会匹配zo、zoo等,但不能匹配 "z"。

?--------匹配前⾯的⼦表达式零次或⼀次,等价于 {0,1} 如:/do(es)+/与/do(es){0,1}/ 会匹配do、does。

\d-------匹配⼀个数字字符。

等价于 [0-9]。

\D------匹配⼀个⾮数字字符。

等价于 [^0-9]。

\S------匹配任何空⽩字符。

包括空格、制表符、换页符等等。

等价于 [ \f\n\r\t\v]。

\s-------匹配任何⾮空⽩字符。

等价于 [^ \f\n\r\t\v]。

x|y------匹配 x 或 y。

如:/(b|d|h)ear/,可以匹配:bear、dear、hear。

x,y也可以是独⽴的正则表达式,如:(^\d{2}$)|(^\d{5}$),匹配2位和5位数字。

[xyz]------字符集合。

匹配所包含的任意⼀个字符。

[a-z]------字符范围。

匹配指定范围内的任意⼀个⼩写字符。

[A-Z]------字符范围。

匹配指定范围内的任意⼀个⼤写字符。

[0-9]------数字范围。

匹配指定范围内的任意⼀个数字。

⼆、⾝份证号码、护照,使⽤正则表达式验证:var IdCardNumberReg = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;var PassportNumberReg = /^1[45][0-9]{7}$|(^[P|p|S|s]\d{7}$)|(^[S|s|G|g|E|e]\d{8}$)|(^[Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\d{8}$)|(^[H|h|M|m]\d{8,10}$)/; var IsValid=IdCardNumberReg.test("512903************");。

iOS常用正则表达式验证(手机号、密码格式、身份证号等)

iOS常用正则表达式验证(手机号、密码格式、身份证号等)

iOS常⽤正则表达式验证(⼿机号、密码格式、⾝份证号等)#import@interfaceUtils : NSObject#pragma 正则匹配⼿机号+ (BOOL)checkTelNumber:(NSString*) telNumber;#pragma 正则匹配⽤户密码6-18位数字和字母组合+ (BOOL)checkPassword:(NSString*) password;#pragma 正则匹配⽤户姓名,20位的中⽂或英⽂+ (BOOL)checkUserName : (NSString*) userName;#pragma 正则匹配⽤户⾝份证号+ (BOOL)checkUserIdCard: (NSString*) idCard;#pragma 正则匹员⼯号,12位的数字+ (BOOL)checkEmployeeNumber : (NSString*) number;#pragma 正则匹配URL+ (BOOL)checkURL : (NSString*) url;@end#import "Utils.h"@implementationUtils#pragma 正则匹配⼿机号+ (BOOL)checkTelNumber:(NSString*) telNumber{NSString*pattern =@"^1+[3578]+\\d{9}";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern];BOOLisMatch = [predevaluateWithObject:telNumber];returnisMatch;}#pragma 正则匹配⽤户密码6-18位数字和字母组合+ (BOOL)checkPassword:(NSString*) password{NSString*pattern =@"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern];BOOLisMatch = [predevaluateWithObject:password];returnisMatch;}#pragma 正则匹配⽤户姓名,20位的中⽂或英⽂+ (BOOL)checkUserName : (NSString*) userName{NSString*pattern =@"^[a-zA-Z\u4E00-\u9FA5]{1,20}";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern]; BOOLisMatch = [predevaluateWithObject:userName];returnisMatch;}#pragma 正则匹配⽤户⾝份证号15或18位+ (BOOL)checkUserIdCard: (NSString*) idCard{NSString*pattern =@"(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern]; BOOLisMatch = [predevaluateWithObject:idCard];returnisMatch;}#pragma 正则匹员⼯号,12位的数字+ (BOOL)checkEmployeeNumber : (NSString*) number{NSString*pattern =@"^[0-9]{12}";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern]; BOOLisMatch = [predevaluateWithObject:number];returnisMatch;}#pragma 正则匹配URL+ (BOOL)checkURL : (NSString*) url{NSString*pattern =@"^[0-9A-Za-z]{1,50}";NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",pattern]; BOOLisMatch = [predevaluateWithObject:url];returnisMatch;}@end。

uni-app中正则表达式验证手机号,身份证号输入格式是否正确

uni-app中正则表达式验证手机号,身份证号输入格式是否正确

uni-app中正则表达式验证⼿机号,⾝份证号输⼊格式是否正确在⽤户提交信息的时候通常会输⼊⼿机号之类的,所以需要前端在提交的时候验证其输⼊的格式是否正确,以是在uni-app项⽬中,仅展⽰验证部分内容⼿机号:let reg = /^[1][3,4,5,7,8,9][0-9]{9}$/ //正则表达式定义⼿机号正确格式if (!this.tele) { //判断如果⼿机号(this.tele)为空,提⽰⽤户输⼊⼿机号uni.showToast({title: '请输⼊⼿机号',icon: 'none'})return}if (!reg.test(this.tele)) { //判断⼿机号格式时候正确uni.showToast({title: '请输⼊正确的⼿机号',icon: 'none'})return}⾝份证号:let reg1 = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/[]() //正则表达式定义⾝份证号正确格式if (!this.card_num) { //判断如果⾝份证号(this.card)num)为空,提⽰⽤户输⼊⾝份证号uni.showToast({title: '请输⼊⾝份证号',icon: 'none'})return}if (!reg1.test(this.card_num)) { //判断⾝份证号格式时候正确uni.showToast({title: '请输⼊正确的⾝份证号',icon: 'none'})return}。

最权威的身份证号码正则表达式

最权威的身份证号码正则表达式

//身份证正则表达式(15位)isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//身份证正则表达式(18位)isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;地区、性别和身份证进行判断的正则表达式:<script>varaCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}function cidInfo(sId){var iSum=0var info=""if(!/^\d{17}(\d|x)$/i.test(sId))return false;sId=sId.replace(/x$/i,"a");if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区";sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));var d=new Date(sBirthday.replace(/-/g,"/"))if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日";for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)if(iSum%11!=1)return "Error:非法证号";return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")}</script>。

正则表达式验证手机号身份证号银行卡号姓名输入

正则表达式验证手机号身份证号银行卡号姓名输入

正则表达式验证⼿机号⾝份证号银⾏卡号姓名输⼊⼿机号验证var mobile = /^1[3|4|5|7|8]\d{9}$/;mobile.test(value);⽣⽇格式转换'20171102'.replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")邮箱验证var mm = /^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/;mm.test(value);⾝份证号验证var isIDCard1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//(15位)var isIDCard2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;//(18位)isIDCard1.test(value);isIDCard2.test(value)姓名输⼊2-8var realname = /^([\u4e00-\u9fa5]{2,8}|[a-zA-Z]{2,16})$/g;realname.test(value);姓名只取前后2字符str.replace(/^(.).+(.)$/g, "$1*$2");银⾏卡号取前6后4str.replace(/^(.{6}).+(.{4})$/g, "$1******$2");⾝份证号码取前6后4位 data.replace(/^(.{6})(?:\d+)(.{4})$/, "$1****$2");⼿机号码取前3后4位 data.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');银⾏卡号验证jQuery.validator.addMethod("checkCardNumber", function (value, element) {return this.optional(element) || (luhmCheck(value));}, "卡号输⼊有误,请检查输⼊");//Description: 银⾏卡号Luhm校验//Luhm校验规则:16位银⾏卡号(19位通⽤):// 1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(18),位于奇数位号上的数字乘以 2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码(前六位数)
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。
3、出生日期码(第七位至十四位)

表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。
4、顺序码(第十五位至十七位)
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
第二种方法:
function scCard(){ var scType=document.getElementById("sc_card_type").value; if(scType=="1"){ var scCard=document.getElementById("sc_card_num").value; if(scCard.length!=0){ if(!checkCard(scCard)){ $("#errorTips").html("身份证号码格式错误"); }else{ $("#errorTips").html(""); } } } return false; } //function checkidno(obj) { var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆", 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外" }; checkCard = function(obj) { //var card = document.getElementById('card_no').value; //是否为空 // if(card === '') // { // return false; //} //校验长度,类型 if(isCardNo(obj) === false) { return false; } //检查省份 if(checkProvince(obj) === false) { return false; } //校验生日 if(checkBirthday(obj) === false) { return false; } //检验位的检测 if(checkParity(obj) === false) { return false; } return true; }; //检查号码是否符合规范,包括长度,类型 isCardNo = function(obj) { //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/; if(reg.test(obj) === false) { return false; } return true; }; //取身份证前两位,校验省份 checkProvince = function(obj) { var province = obj.substr(0,2); if(vcity[province] == undefined) { return false; } return true; }; //检查生日是否正确 checkBirthday = function(obj) { var len = obj.length; //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 if(len == '15') { var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/; var arr_data = obj.match(re_fifteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date('19'+year+'/'+month+'/'+day); return verifyBirthday('19'+year,month,day,birthday); } //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X if(len == '18') { var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/; var arr_data = obj.match(re_eighteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date(year+'/'+month+'/'+day); return verifyBirthday(year,month,day,birthday); } return false; }; //校验日期 verifyBirthday = function(year,month,day,birthday) { var now = new Date(); var now_year = now.getFullYear(); //年月日是否合理 if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) { //判断年份的范围(3岁到100岁之间) var time = now_year - year; if(time >= 0 && time <= 130) { return true; } return false; } return false; }; //校验位的检测 checkParity = function(obj) { //15位转18位 obj = changeFivteenToEighteen(obj); var len = obj.length; if(len == '18') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var cardTemp = 0, i, valnum; for(i = 0; i < 17; i ++) { cardTemp += obj.substr(i, 1) * arrInt[i]; } valnum = arrCh[cardTemp % 11]; if (valnum == obj.substr(17, 1)) { return true; } return false; } return false; }; //15位转18位身份证号 changeFivteenToEighteen = function(obj) { if(obj.length == '15') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var cardTemp = 0, i; obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6); for(i = 0; i < 17; i ++) { cardTemp += obj.substr(i, 1) * arrInt[i]; } obj += arrCh[cardTemp % 11]; return obj; } return obj; };
相关文档
最新文档