JS正则表达式详解及身份证号码验证(简易版)

 更新时间:2022年07月05日 16:01:26   作者:莱克博尔德  
在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案,下面这篇文章主要给大家介绍了关于JS正则表达式及身份证号码验证的相关资料,需要的朋友可以参考下

JS正则表达式 匹配与搜索

使用正则的查找替换

regexp()返回相匹配的子串的起始位置,没有相匹配的则返回-1

match用于检索,返回存放匹配结果的数组

var str = "wert45678yuiytrew";
//使用正则匹配子串str中的数字
console.log(str.match(/[0-9]+/)); //return 45678
//使用RegExp(不用双斜线,用引号)
var pat = new RegExp("[0-9]+");
console.log(str.match(pat));	//return 45678
console.log(pat.test(pat));	//return 45678
console.log(pat.exec(str));	//return 45678

一、方括号,圆括号

方括号用于查找某个范围内的字符

  • [abc]:匹配到方括号内任意a/b/c,则符合条件
  • [^abc] :^表示取反,意思是只要匹配到除a\b\c三个字母以外的都符合条件
  • [0-9]:查找到任何从0到9的数字,都符合条件
  • [A-z]:查找到任何个从大写A到小写z的字符都符合条件
  • (red|blue|green): 中括号代表匹配一个字符,圆括号代表同时匹配多个字符(匹配单词) 查找任何指定的选项,即查找到任意一个单词都符合条件

举例:

var str = "wer2ty4d56fg78hj987k";
console.log(str.match(/[0-9]/g));	//匹配任意一位数字
console.log(str.match(/[0-9][0-9]/g));	//匹配任意两位数字--输出56 78 98

二、修饰符

使用g修饰符,表示匹配所有

三、元字符

元字符(Metacharacter)是拥有特殊含义的字符

用法:

  • 查找任意字符 ,用点 "."代替
  • 查找 单词字符 用w,查找非单词字符用大写W,
  • 查找 数字 用d,查找非数字用大写D
  • 查找 空白字符 (回车、空格、Table等)s,查找非空白符用大写S
var str = "wer2ty4d56fg78hj987k";
//匹配任意两位数字--输出56 78 98:
console.log(str.match(/\d{2}/g));	
//匹配任意两位或三位数字--输出56 78 987:
console.log(str.match(/\d{2,3}/g));	
var str = "wer2ty4d56fg78hj987k";
\d{1,}    
[0-9]{1,}
\d+
[0-9]+
以上四种写法都表示  匹配至少一位的数字

四、量词

用法:

var str = "wer2ty4d56fg78hj987k";
//匹配任意两位数字--输出56 78 98:
console.log(str.match(/[0-9]{2}/g));	
//匹配任意两位或三位数字--输出56 78 987:
console.log(str.match(/[0-9]{2,3}/g));	

以上匹配都是模糊匹配,

下面是精确匹配

var str = "wer2ty4d56fg78hj987k";
var pat = new RegExp("[0-9]+");
//匹配子串"er2567thj"中是否含有数字:
console.log(pat.test("er2567thj")); //return true
var pat = new RegExp("^[0-9]+");
//匹配子串"er2567thj"中是否是以数字开头:
console.log(pat.test("er2567thj"));  //return false
var pat = new RegExp("[0-9]+$");
//匹配子串"er2567thj"中是否是以数字结尾:
console.log(pat.test("er2567thj"));  //return false

//精确匹配:
//子字符串必须以数字开头(^表示前面不能有任何东西,$表示后面不能有任何东西),
var pat = new RegExp("^[0-9]+$");
console.log(pat.test("er2567thj"));  //return false 匹配子串是否为纯数字

精确匹配:

//精确匹配任意6位数字  ---邮政编码:
var pat = new RegExp("^[0-9]{6}$");	

身份证号码验证(简易版)

下面简易版只是基本的格式判定只可以用于基础的表单验证

存在不足的地方包括:

  • 地址码判定不精确,我国不存在16、26开头的地区,以9开头的是外国人移民中国的身份证号码?
  • 日期判定不精确,19490231也可通过验证,但2月没有31号
  • 校验码是由前17位本体码通过算法计算得到,简易版并未校验此码

身份证号码规则:

身份证号码组成包括:地址码(6位)+年份码(4位)+月份码(2位)+日期码(2位)+顺序码(3位)+校验码(1位)。身份证号码共计18位。

下面分别说明不同码的规则,并写出对应的正则表达式

1.地址码

  • 长度为6位
  • 全部为数字
  • 第1位为1-9,后5位为0-9的数字
    总结以上,地址码写为:
/ ^[1-9]\d{5}/

2.年份码

  • 长度4位
  • 前两位数字以18、19、20开头(若不需要18开头的年份,可去掉)
  • 后两位数字为0-9之间
    总结以上。年份码可以写为:
/(19|20)\d{2}/

3.月份码

  • 长度2位
  • 第一位数字为0时,第二位数字为1-9
  • 第一位数字为1时,第二位数字为0-2
    总结以上,月份码可以写为:
/((0[1-9])|(1[0-2]))/

4.日期码

  • 长度2位
  • 第一位数字为0-2时,第二位数字为1-9
  • 或者单独的10、20、30、31
    总结以上,日期码可以写为:
/(([0-2][1-9])|10|20|30|31)/

5.顺序码

长度为任意的3位数字

可以写为:

/\d{3}/

6.校验码

  • 长度为1位
  • 可以是数字
  • 可以是不区分大小写的 字母x或 X
    总结以上,可以写为:
/[0-9Xx]/

7.身份证号码正则表达式汇总

/^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}{0-9Xx}$/

测试代码:

//输出 true
console.log(p.test("11010519491231002X"));
//输出 false 不能以0开头
console.log(p.test("01010519491231002X"));
//输出 false 年份不能以17开头
console.log(p.test("11010517491231002X"));
//输出 false 月份不能为13
console.log(p.test("11010519491331002X"));
//输出 false 日期不能为32
console.log(p.test("11010519491232002X"));
//输出 false 不能以a结尾
console.log(p.test("11010519491232002a"));

总结

到此这篇关于JS正则表达式详解及身份证号码验证的文章就介绍到这了,更多相关JS正则验证身份证号码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript实用小函数使用介绍

    javascript实用小函数使用介绍

    本文整理了一些实用小函数如阻止输入非数字,backspace除外;限制输入最大字符串长度等,需要的朋友可以了解下
    2013-11-11
  • 基于JS模仿windows文件按名称排序效果

    基于JS模仿windows文件按名称排序效果

    这篇文章主要介绍了基于JS实现模仿windows文件按名称排序的相关资料,主要是对数字的处理操作,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 怎么使用js计算当前一周的日期

    怎么使用js计算当前一周的日期

    这篇文章主要给大家介绍了关于怎么使用js计算当前一周的日期的相关资料,我们可以使用JavaScript的Date对象来获取近一周的日期,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-09-09
  • uni-app的pages.json处理方案示例

    uni-app的pages.json处理方案示例

    这篇文章主要为大家介绍了uni-app的pages.json处理方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • js 目录列举函数

    js 目录列举函数

    用js获取文件目录的代码,一般主要是用了区别vbs的一些代码
    2008-11-11
  • js+ajax实现获取文件大小的方法

    js+ajax实现获取文件大小的方法

    这篇文章主要介绍了js+ajax实现获取文件大小的方法,涉及JavaScript调用ajax交互及后台C#文件操作的相关技巧,需要的朋友可以参考下
    2015-12-12
  • js中new一个对象的过程

    js中new一个对象的过程

    本文主要介绍了js中new一个对象的过程。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JavaScript中判断整数的多种方法总结

    JavaScript中判断整数的多种方法总结

    这篇文章主要介绍了JavaScript中判断整数的多种方法总结,本文总结了5种判断整数的方法,如取余运算符判断、Math.round、Math.ceil、Math.floor判断等,需要的朋友可以参考下
    2014-11-11
  • Bootstrap实现提示框和弹出框效果

    Bootstrap实现提示框和弹出框效果

    这篇文章主要为大家详细介绍了Bootstrap实现弹出框和提示框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 发表文章时自动保存到剪贴板

    发表文章时自动保存到剪贴板

    发表文章时自动保存到剪贴板...
    2006-10-10

最新评论