JavaScript正则表达式验证身份证号码是否合法(两种方法)分析
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)$/))另外,还可以使用正则表达式来从身份证号码中提取出性别和出生日期信息。
java证件号正则

java证件号正则在Java中,验证证件号的正则表达式可以根据不同的证件类型进行匹配。
以下是一个通用的正则表达式,用于验证中国大陆居民的身份证号:```javaString regex = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2|3|4|5|6|7|8|9])\\d{3}) $";```这个正则表达式匹配的是18位身份证号,其中包括:1. 前6位:地区代码2. 接下来4位:出生年份3. 然后2位:出生月份4. 接着2位:出生日期5. 最后4位:顺序码,其中最后一位为校验码要使用这个正则表达式验证身份证号,你可以使用Java的`Pattern`和`Matcher`类:```javaimport java.util.regex.Matcher;import java.util.regex.Pattern;public class IDCardValidator {public static void main(String[] args) {StringidCard=*******************";String regex = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2|3|4|5|6|7|8|9])\\d{3}) $";Pattern pattern = pile(regex);Matcher matcher = pattern.matcher(idCard);if (matcher.matches()) {System.out.println("身份证号有效");} else {System.out.println("身份证号无效");}}}请注意,这个正则表达式仅适用于中国大陆的身份证号。
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))); }}}。
js几种常用的数据校验方法

js几种常用的数据校验方法在前端开发中,数据校验是非常重要的一环。
通过对用户输入的数据进行校验,可以有效地防止错误数据的提交,提高系统的安全性和稳定性。
下面将介绍几种常用的js数据校验方法。
1. 正则表达式校验正则表达式是一种强大的文本匹配工具,可以用来对字符串进行复杂的校验。
在js中,可以使用RegExp对象来创建正则表达式,并使用test()方法来进行匹配校验。
例如,可以使用正则表达式来校验手机号码的格式是否正确:```javascriptfunction validatePhone(phone) {var reg = /^1[3456789]\d{9}$/;return reg.test(phone);}```2. 内置校验方法在HTML5中,提供了一些内置的校验方法,可以直接在表单元素上使用。
例如,可以使用required属性来校验必填项,使用type属性来校验输入的数据类型。
例如,可以使用type="email"来校验邮箱地址的格式是否正确:```html<input type="email" required>```3. 自定义校验方法除了使用正则表达式和内置校验方法外,还可以自定义校验方法来满足特定的需求。
可以通过编写自定义函数来实现校验逻辑,并在需要校验的地方调用该函数。
例如,可以自定义一个校验密码强度的方法:```javascriptfunction validatePassword(password) {// 校验密码强度的逻辑// ...return true; // 返回校验结果}```4. 第三方库校验除了自己编写校验方法外,还可以使用一些第三方库来简化数据校验的过程。
例如,jQuery Validation是一个常用的表单校验插件,可以通过简单的配置来实现各种校验需求。
使用该插件可以方便地对表单进行校验,并提供了丰富的错误提示功能。
JavaScript判断输入框输入的名字是否合法(支持分隔符),以及身份证号码是否合法

JavaScript判断输⼊框输⼊的名字是否合法(⽀持分隔符),以及⾝份证号码是否合法//在进⾏实名认证的时候,将⽤户所填信息上传⾄实名认证接⼝之前判断⽤户的输⼊是否合法后再进⾏认证,可以有效的节约实名认证的经济消耗//判断输⼊的名字是否合法(⽀持少数民族的分隔符[ · ])// [ · ]的Unicode为u00b7function isChineseName(name){ //把名字中的分隔符(·)去掉,再判断是否全为中⽂,且长度在范围为2-15var nameWithoutDot = name.replace(/\u00b7/g, '');console.log(nameWithoutDot);if(/^[\u4e00-\u9fa5]{2,15}$/i.test(nameWithoutDot)){ return true;alert("合法名字");}else{ return false;alert("不合法名字");}}//判断⾝份证号码是否输⼊合法function isLeagalIdNum(id){ //前两位数字的合法范围var legalProvinceId = [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];var isLegalProvinceId = legalProvinceId.includes(parseInt(id.substring(0, 2))); //前两位省份码是否合法 //3,4位表⽰城市代码,最⼤为70var isLegalCityId = (parseInt(id.substring(2, 4)) <= 70 && parseInt(id.substring(2, 4)) >= 1); // 3、4位城市码是否合法//第5、6位代表城市的区,范围01 ~ 99;判断是否⼤于0 就好var islegalAreaId = (parseInt(id.substring(4, 6)) > 0)// 第7-10位出⽣年份是否合法 (设置范围为 1900年⾄现在年份,120岁的应该不会玩⼿机吧 --)var isLegalBirthYear = (parseInt(id.substring(6, 10)) <= new Date().getFullYear() && parseInt(id.substring(6, 10)) >= 1900);// 判断11、12位⽉份是否合法var isLegalBirthMonth = (parseInt(id.substring(10, 12)) <= 12 && parseInt(id.substring(10, 12)) >= 1);if (parseInt(id.substring(6, 10)) == new Date().getFullYear() && parseInt(id.substring(10, 12)) > (new Date().getMonth() + 1)) //判断所填⽉份是否⼤于当前⽉份{isLegalBirthMonth = false;}// 判断13、14位⽇期是否合法var bigMonth = [1, 3, 4, 7, 8, 10, 12]; //分⼤⽉⼩⽉进⾏判断var isLegalBirthDay = false;if (bigMonth.includes(parseInt(id.substring(10, 12)))) {isLegalBirthDay = (parseInt(id.substring(12, 14)) >= 1 && parseInt(id.substring(12, 14)) <= 31)} else {if (parseInt(id.substring(10, 12)) == 2) { //⼆⽉最多29天,这⾥就不判断闰年平年了isLegalBirthDay = (parseInt(id.substring(12, 14)) >= 1 && parseInt(id.substring(12, 14)) <= 29);} else {isLegalBirthDay = (parseInt(id.substring(12, 14)) >= 1 && parseInt(id.substring(12, 14)) <= 30);}}if (parseInt(id.substring(6, 10)) == new Date().getFullYear() && parseInt(id.substring(6, 10)) == new Date().getMonth() && parseInt(id.substring(10, 12)) > new Date().getDate()) //判断所填⽉份是否⼤于当前⽉份isLegalBirthDay = false;return isLegalProvinceId && isLegalCityId && islegalAreaId && isLegalBirthYear && isLegalBirthMonth && isLegalBirthDay;}。
java 证件号码正则校验规则

java 证件号码正则校验规则摘要:一、Java中正则表达式的使用二、身份证号码正则校验规则1.整体结构2.校验位计算3.校验位规则三、护照号码正则校验规则1.整体结构2.护照号码格式四、港澳台通行证号码正则校验规则1.整体结构2.港澳台通行证号码格式五、实用示例正文:一、Java中正则表达式的使用在Java中,我们可以使用`Pattern`和`Matcher`类来进行正则表达式的匹配和校验。
通过引入`java.util.regex`包,我们可以方便地使用正则表达式对各种字符串进行校验。
二、身份证号码正则校验规则1.整体结构身份证号码由18位数字组成,包括地区代码、出生日期、顺序码和校验码。
2.校验位计算校验位采用加权因子计算,加权因子分别为7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
3.校验位规则校验位数字根据前17位数字的权重值计算得出,权重值依次为:1、3、7、9、10、5、8、4、2、6、1、3、7、9、10、5、8、4、2。
计算方法为:将前17位数字分别乘以对应的权重值,然后求和,最后除以11,取余数,对应校验码。
三、护照号码正则校验规则1.整体结构护照号码由9位数字组成,包括国家代码、地区代码、顺序码和校验码。
2.护照号码格式护照号码的国家代码和地区代码均为2位数字,顺序码为3位数字,校验码为1位数字。
四、港澳台通行证号码正则校验规则1.整体结构港澳台通行证号码由9位数字组成,包括地区代码、顺序码和校验码。
2.港澳台通行证号码格式地区代码为1位字母,顺序码为4位数字,校验码为1位数字。
element 正则验证

element 正则验证
Element是一个基于Vue.js的UI框架,常用于构建 Web 应用程序。
在使用 Element 进行表单验证时,我们经常需要使用正则表达式来验证表单输入的格式是否符合要求。
本文将介绍 Element 中常用的正则表达式验证方法。
1. 判断是否为金额格式
在表单中,经常需要验证输入的金额是否符合要求。
在 Element 中,可以使用如下的正则表达式进行验证:
```javascript
/^[0-9]+(.[0-9]{1,2})?$/
```
这个正则表达式可以验证输入字符串是否为数字,并且最多保留两位小数。
2. 判断是否为手机号码格式
在验证表单中的手机号码时,可以使用如下的正则表达式:
```javascript
/^1[0-9]{10}$/
```
这个正则表达式可以验证是否为以 1 开头的 11 位数字,符合手机号码的格式。
3. 判断是否为邮箱格式
在验证表单中的邮箱地址时,可以使用如下的正则表达式:
```javascript
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ ```
这个正则表达式可以验证是否为合法的邮箱地址格式。
4. 判断是否为身份证号码格式
在验证表单中的身份证号码时,可以使用如下的正则表达式: ```javascript
/^(d{15}$|^d{18}$|^d{17}(d|X|x))$/
```
这个正则表达式可以验证是否为合法的身份证号码格式。
以上就是 Element 中常用的几种正则表达式验证方法,读者可以根据需要进行选择和修改。
正则表达式-身份证号码验证

正则表达式-⾝份证号码验证⾝份证号码验证,包含两代⾝份证,第⼀代和第⼆代⾝份证第⼀代⾝份证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位的⾝份证号码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、正则表达式判断
第二种方法:
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
位),皆为数字
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;。