各类证件类型的格式校验

2024-05-02 20:08

本文主要是介绍各类证件类型的格式校验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、身份证校验

function isCardID(sId) {var that = this;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: "国外"};var iSum = 0;var info = "";if (!/^\d{17}(\d|x)$/i.test(sId)) {alert('您输入的身份证长度或格式错误');return false;}sId = sId.replace(/x$/i, "a");if (aCity[parseInt(sId.substr(0, 2))] == null) {alert('您的身份证地区非法');return false;}var 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())) {alert('身份证上的出生日期非法');return false;}for (var i = 17; i >= 0; i--) {iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);}if (iSum % 11 != 1) {alert('您输入的身份证号非法');return false;}return true;
}
2、统一写到一起,有需要的正则表达式直接去代码里粘

去掉字符串中的空格

function Trim(str,is_global)
{var result;result = str.replace(/(^\s+)|(\s+$)/g,"");if(is_global.toLowerCase()=="g"){result = result.replace(/\s/g,"");}return result;
}
获取长度

function GetLength (str) {return str.replace(/[\u0391-\uFFE5]/g,"aa").length;
}
统一的验证方法

function validCredNum (type,credNum){var validFlag = true;if (typeof credNum == "undefined" || credNum == null || credNum == "" || credNum == "-1") {validFlag = false;}else{if ("1" == type) {//身份证validFlag = isCardID(credNum);} else if ("3" == type){               //护照号GetLength(Trim(credNum,'g'))<3 ? validFlag = false : validFlag = true;}else if ("4" == type) {            //台湾居民来往大陆通行证(台胞证)、或港澳居民往来内地通行证(回乡证)GetLength(Trim(credNum,'g'))<8 ? validFlag = false : validFlag = true;// validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);}else if ("5" == type) {            //军官证/警官证GetLength(Trim(credNum,'g'))<10 || GetLength(Trim(credNum,'g'))>18? validFlag = false : validFlag = true;// validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);}else if ("6" == type) {            //异常身份证GetLength(Trim(credNum,'g'))!=18? validFlag = false : validFlag = true;// validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);} else if ("mobile" == type){//手机if(credNum.length == 10 && credNum.indexOf('09') == 0||credNum.length == 11 && credNum.indexOf('1') == 0){validFlag = true;}else{validFlag = false;}// validFlag = (/^[\+86|86]?1[3|4|5|7|8]\d{9}$/.test(credNum));} else if ("name" == type){//姓名let credName = Trim(credNum,'g');GetLength(credName)<3||(/\d+/g).test(credName)||(/[#&]/).test(credName)?validFlag = false:validFlag = true;// validFlag = (/^[\u4e00-\u9fa5a-zA-Z]{2,20}$/).test(credNum);} else if ("email" == type){//邮箱validFlag = (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(credNum));} else if ("postCode" == type){//邮政编码validFlag = (/^[0-9]{6}$/).test(credNum);} else if ("passWord" == type){ //密码验证 6-20位,字母、数字、符号的组合validFlag = (/^[\w.]{6,20}$/).test(credNum)} else if ('number' == type){     //验证是否为全数字validFlag = (/^(\d|[1-9]\d+)(\.\d+)?$/).test(credNum)} else if('symbol' == type){validFlag = (/[\u4E00-\u9FA5]/g).test(Trim(credNum,'g'))              //详细地址}else if('protection' == type){validFlag = (/^[a-zA-Z0-9]{3,21}$/||/^(P\d{7})|(G\d{8})$/).test(credNum)     //护照}else if('officers' == type){validFlag = (/^[a-zA-Z0-9]{7,21}$/).test(credNum)     //军官证}else if('book' == type){validFlag = ( /^[a-zA-Z0-9]{3,21}$/).test(credNum)     //  户口本}else if('bankCard' == type){validFlag = ( /^(\d{16}|\d{19})$/).test(credNum)     //  银行卡}else if('telephone' == type){if(credNum.indexOf('400') == 0 ||credNum.indexOf('800') == 0){if(credNum.length !=10){validFlag = false}}else {validFlag = (/^0\d{2,3}-?\d{7,8}$/).test(credNum)}}}return validFlag;
};

今天遇到了一个手机号的校验,11位数字,第二位是3,4,5,7,8,最后8位不能是8位连续相同数字

补充一个这个正则表达式:

/^1[3,4,5,7,8]\d(?!(\d)\1{7})\d{8}$/





这篇关于各类证件类型的格式校验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/955069

相关文章

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Python FastAPI实现JWT校验的完整指南

《PythonFastAPI实现JWT校验的完整指南》在现代Web开发中,构建安全的API接口是开发者必须面对的核心挑战之一,本文将深入探讨如何基于FastAPI实现JWT(JSONWebToken... 目录一、JWT认证的核心原理二、项目初始化与环境配置三、安全密码处理机制四、JWT令牌的生成与验证五、

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT