一个正则表达式的有关问题,数字的个数写1就可以匹配下,写比1大的就匹配不下了
程序员文章站
2022-05-22 18:20:09
...
一个正则表达式的问题,数字的个数写1就可以匹配上,写比1大的就匹配不上了。
正则如下:
如果把最后那个4改成1,就能匹配的上,改成比1大的就不行了
这个正则是想用来匹配身份证号码的,如果哪位大侠有的话希望能发出来借鉴一下~兼容15位和18位的~
------解决方案--------------------
1、身份证号码含义:
一代(现已淘汰,不必判断了)
地区代码(6位)出生年(2位)出生月(2位)出生日(2位)顺号(3位) 共15位
二代
地区代码(6位)出生年(4位)出生月(2位)出生日(2位)顺号(3位)校验位(1位) 共18位
校验位可能是 X
2、简单判定,只需判断位数是否正确即可
/^\d{15}(?:\d{2}[\dX])?$/
3、精确判定(二代)应使用校验码生成算法。各种语言的“身份证校验码生成函数”都可以在网上找到
------解决方案--------------------
validateidnumber( "22111111111234563" );
用字符串,数值的话就越界了
本来身份证号就应该是字符串
正则如下:
$patten='/^[1-9]\d{5}[1-2]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/';//就是最后这个4
如果把最后那个4改成1,就能匹配的上,改成比1大的就不行了
这个正则是想用来匹配身份证号码的,如果哪位大侠有的话希望能发出来借鉴一下~兼容15位和18位的~
------解决方案--------------------
1、身份证号码含义:
一代(现已淘汰,不必判断了)
地区代码(6位)出生年(2位)出生月(2位)出生日(2位)顺号(3位) 共15位
二代
地区代码(6位)出生年(4位)出生月(2位)出生日(2位)顺号(3位)校验位(1位) 共18位
校验位可能是 X
2、简单判定,只需判断位数是否正确即可
/^\d{15}(?:\d{2}[\dX])?$/
3、精确判定(二代)应使用校验码生成算法。各种语言的“身份证校验码生成函数”都可以在网上找到
------解决方案--------------------
validateidnumber( "22111111111234563" );
用字符串,数值的话就越界了
本来身份证号就应该是字符串
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论