A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悦动天下 初级黑马   /  2014-11-21 22:30  /  1213 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

判断一个字符串是不是身份证号码,即是否是15或18位数字。(黑马下的基础题,望哪位解答下)

7 个回复

倒序浏览
[1-9]\\d{14}([\\d]{2}[\\dxX])?
回复 使用道具 举报
本帖最后由 黑马黄武先 于 2014-11-22 03:00 编辑

最好是定义数组来判断吧
回复 使用道具 举报
像这种常规的验证网上一般都有,主要得自己理解是怎么匹配的,以后即使有不同的需求自己也会写。
回复 使用道具 举报
"[1-9]\\d{13,16}[\\dxX]"
没有更细腻的划分了 ,太细腻就太麻烦了。。。还得考虑中间的日期。后面的数字组成,前面开头的地区不同。。
身份证号码的组成:前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第18位为校验码,作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

"[1-9]\\d{13,16}[\\dxX]"
解释下这个简单的正则:开头不能是0的数字.后面可以是13-16位数字。最后面一个可以是数字,也可以是大小写的X。组合起来就是15-18位的身份证号码了。
回复 使用道具 举报
[0-9]{15,18}
回复 使用道具 举报
Eagle 发表于 2014-11-22 06:55
"[1-9]\\d{13,16}[\\dxX]"
没有更细腻的划分了 ,太细腻就太麻烦了。。。还得考虑中间的日期。后面的数字组 ...

恩恩,谢谢了
回复 使用道具 举报
依米阳光 发表于 2014-11-22 04:01
像这种常规的验证网上一般都有,主要得自己理解是怎么匹配的,以后即使有不同的需求自己也会写。 ...

恩,说的也是啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马