详解正则表达式之数字验证正则表达式

1.验证只包含数字、指定长度(N)的字符串

比如我要验证只包含数字,长度为6的字符串,如123456,则可以使用下面几种效果相同的验证方式

复制代码代码如下:\d{6}[0-9]{6}\d\d\d\d\d\d

上述几种方式效果相同,更推荐第一种,它更加简洁!注:后面我都会使用较为简洁的正则表达式,而不会太过啰嗦!

2.验证只包含数字、指定范围长度(N-M)的单词字符串

比如我要验证只包含数字,长度在5到8之间的字符串,如12345,123456,1234567,12345678,则可以使用的验证方式

3.非负整数的验证

显然0,100,56等都是非负整数,而-12,0135等都不是非负整数,验证演示如下:

我们可以看到021-56由于不是正数,不会被选中。(注意:其中用到了^,表示必须以0或者[1-9]开头,因此-56没有被选中;如果没有^,那么-56中的56会被选中)

4.任意整数的验证

任意整数即如0,456,-65等等这是任意整数,也就是说我们需要把正数和非负整数结合起来,验证演示如下:

于是所有的正数包括0、正整数和负整数都匹配了。

5.指定范围内的正整数的验证

比如说我们希望验证1-5678区间内的正整数,如465,23,5677等都属于这个范围,这该怎么验证呢?别着急,我们可以分区间验证:

综上所述,我们可以使用如下正则表达式来验证1-5678之间的所有正整数:

复制代码代码如下:^([1-9]\d{0,2})|([1-4]\d{3})|(5[0-5]\d{2})|(56[0-6]\d)|(567[0-8])$

但果真是这样吗?验证如下:

怎么成这样了呢???后面的三个数的验证都不是我们想要的效果啊!!这是因为正则表达式在匹配时会从左向右匹配,其中2602和4999因为使用[1-9]\d{0,2}可以完成匹配,所以就无需继续了。

我们把正则表达式的顺序倒过来试试?如下所示:

复制代码代码如下:^(567[0-8])|(56[0-6]\d)|(5[0-5]\d{2})|([1-4]\d{3})|([1-9]\d{0,2})$

效果如下:

这次令我们高兴的是在1-5678之间的数都被选上了!!但789和-5中的5被选上了。这是因为我们只在第一个分组前添加了^,我们需要做的是每个分组前都添加^。如下所示:

复制代码代码如下:^(567[0-8])|^(56[0-6]\d)|^(5[0-5]\d{2})|^([1-4]\d{3})|^([1-9]\d{0,2})$

这次效果就没有问题了,如下:

由此可知:组合顺序原则(正整数):依次从最大值的范围组合到最小值的范围组合。

从这个例子受到启发,我们对于指定范围内的正整数的验证的第一个例子中的每一个分组后添加$或\b也可以解决问题。

也就是说下面的两行代码均有效:

复制代码代码如下:^(567[0-8])|^(56[0-6]\d)|^(5[0-5]\d{2})|^([1-4]\d{3})|^([1-9]\d{0,2})$^([1-9]\d{0,2})$|([1-4]\d{3})$|(5[0-5]\d{2})$|(56[0-6]\d)$|(567[0-8])$

6.实数的验证

这里要介绍的实数的验证是至少包含一个小数点的实数,因此实数就包括了整数部分、小数部分和小数点。

验证方法如下:

如果我们希望验证指定精度的实数,我们只需要把末尾的+修改成相应的精度即可,如下所示:

即表示小数部分长度为3的实数。

7.科学计数法的验证

科学计数法就是把一个数记成a*10^n的形式。其中,a是一位整数或着是只有一位整数的小数(如5,3.2等等),所以可知1<=|a|<10。而n是一位整数。所以不难得出科学计数法的验证方法如下所示:

1.手机号码

下面我们按照顺序逐一介绍

目前国内的手机号码多是13开头、15开头和18开头,并且第三位数字目前都有【0-9】这10个数,所以验证起来就很简单了。如下所示:

显然第二种方法更简单一些。

我们可以把2268001-2268999划分为2268001-2268009和2268010-2268099和2268100-2268999。这样,把验证三者的正则表达式组合起来即可。如下所示:

复制代码代码如下:2268((00[1-9])|(0[1-9]\d)|([1-9]\d{2}))

PS这里就不具体介绍啦,都是很简单的知识,如果有疑问可以看我的上一篇博文,它对基本知识阐述得很具体。

演示效果如下:

下面我们以4位的分级号码为例。一般在分机号码之前可能是空格,也可能是-(连字符),还可能什么都没有。于是验证方法如下:

第三部分:2种身份证号码的验证

1.基本知识

15位身份证号码:

1985年我国实行居民身份证制度,当时签发的身份证号码是15位的。其中前6位为地址码,中间6位为出生日期码(年月日各用两位数字表示),最后三位为顺序码。

(注:顺序码是对同年、同月、同日出生的人编订序号,顺序码的奇数分配给男性,偶数分配给女性)

18位身份证号码:

1999年我国开始使用18位的身份证号。其中前6位为地址码,中间8位为出生日期码(年用4位表示,月日各用2位表示),最后四位为顺序码和校验码。

(注:年份用4位是因为使用2位会导致冲突,比如1903年和2003年出生的人。而校验码主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用X表示)

2.15位身份证号码的验证

前6位地址码可以为任意数字,78位的年份码为任意数字,9和10位的月份码应当在01-12之间,11和12位的日期码在01-31之间,最后三位的顺序码为长度为3的任意字符串。于是验证方法如下:

复制代码代码如下:\b\d{8}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}\b

3.18位身份证号码的验证

前6位地址码为任意数字,7-10位的年份码前两位以19或20开头(这里就不考虑18开头了),月日同15位的身份证号码,三位顺序码为长度为3的任意字符串,最后以为验证码为0-9或X。于是验证方法如下:

\b\d{6}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)\b因为只要知道了思路,正则表达式写出来并不难,所以这里就不细讲了。

第四部分:邮政编码验证

我国邮政编码的编码规则:我国采用四级六位编码制,前两位表示省、市、自治区,第三位代表邮区,第四位代表县、市,最后两位代表投递邮局,最后两位是代表从这个城市哪个投递区投递的,即投递区的位置。例如:邮政编码“130021”“13”代表吉林省,“00”代表省会长春,“21”代表所在投递区。

因此验证我国的邮政编码就十分方便了,如下所示:

第五部分:两种IP地址的验证

IP地址可以简单验证,还可以精确验证。

1.简单IP地址验证

([1-9]\d{0,2}\.){3}[1-9]\d{0,2}验证效果如下所示:

2.精确IP地址验证

显然,上面的简单IP地址验证是不精确的,比如999.999.999.999这就不是一个正确的IP地址。

我们知道32位IP地址的每一个数值都是在0~255之间,所以对于1~3位整数.1~3位整数.1~3位整数.1~3位整数我们应该将整数限制在0~255之间,显然,这里要使用分区间的方法了。

100-199之间可以这样表示:1\d{2}

200-249之间可以这样表示:2[0-4]\d

250-255之间可以这样表示:25[0-5]

于是综上所述,可以得到精确IP地址验证的方法如下:

复制代码代码如下:(((25[0-5])|2[0-4]\d|1\d{2}|[1-9]\d|0)\.){3}((25[0-5])|2[0-4]\d|1\d{2}|[1-9]\d|0)

值得注意的是:分组是至关重要的,只有分对了组,才有可能不出问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

THE END
1.各省身份证区域划分与数字含义其中,第一位数字大区制代码,第二位是大区所在省级编码。全国共分为6个大区,即华北区(1)、东北区(2)、华东区(3)、中南区(4)、西南区(5)和西北区(6)。各省身份证的开头数字图一 各省身份证的开头数字图二 根据全国各省所在分区,也就可以知道各省身份证的开头数字。上图由水经微图(简称“微图”)Web版https://baijiahao.baidu.com/s?id=1793851589781419253&wfr=spider&for=pc
2.十八位居民身份证号码的含义十八位居民身份证的1-2位省、自治区、直辖市代码;3-4位地级市、盟、自治州代码;5-6位县、县级市、区代码;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位为顺序号,其中17位(倒数第二位)男为单数,女要为双数。18位作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果尾号是10,那http://gaj.jinhua.gov.cn/art/2023/12/7/art_1229180934_59014554.html
3.身份证18位数字分别代表什么视频原标题:身份证18位数字分别代表什么 身份证号码是每一个公民唯一的、终身不变的身份代码。这个号码一共有18位数字,这18位数字有个排序的规则,就是“地址码+出生日期码+顺序码+校验码”。生活中,还有一部分人身份证最后一位是字母,这是为什么呢?另外,按照《中华人民共和国居民身份证法》规定,居民身份证按年龄区https://www.workercn.cn/c/2024-11-27/8401707.shtml
4.涨知识身份证后4位数还有这么重要的含义!第3和第4位代表的是城市代码 第5和第6位代表的是区县代码 7-14位代表的是出生年月日 15和16位代表的是所在地派出所的代码 第17位代表的是性别,奇数是男性,偶数是女性 最后一位是校验码,有的人身份证是0-9的其中一个数字,也有的人是一个X,其实X代表的是数字10,由于直接用10来做尾号,身份证号码会变成http://www.liaozhai.tv/folder34/folder131/folder134/2021-04-06/qnWWhRKNuzdojjjl.html
5.身份证的前六位数字代表地址信息还是出生日期3.答案解析: 身份证号码前6位代表的是持证人的地址,第一位、第二位表示省或直辖市或自治区;第三位、第四位代表市辖区;第五位、第六位代表区、县、市等。 4.推荐阅读: 蚂蚁庄园今日答案汇总 蚂蚁庄园今日正确答案一览 以上便是小编为大家带来的蚂蚁庄园1月4日的答案了,答案是地址信息,是否有帮到你们呢?还https://app.ali213.net/mip/gl/982615.html
6.全国身份证号码前六位与地区对照.xls全国身份证号码前六位与地区对照.xls 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 Sheet3 Sheet2 Sheet1 420205 铁山区 420222 阳新县 420281 大冶市 420300 十堰市 420301 市辖区 420302 茅箭区 420303 张湾区 420321 郧县 420322 郧西县 420323 竹山县 420324 竹溪县 420325 房县 420381 丹https://m.book118.com/html/2023/0715/6104231053005201.shtm
7.关于高等学历继续教育(成教)学生2024年度学费收缴的通知第三步:登录“智慧缴费”页面后,输入账号或证件号、密码(账号为学号,证件号为身份证号,第一次登录的初始密码为“Zyy身份证号后6位(末位若为“X”,需大写)”),点击“登录”,首次登录需修改密码、验证手机号然后方可进入下一步。注意:输入的手机号码必须为学生报考所用手机号码。并且在修改密码时一定要认真核对账https://jxjy.sdutcm.edu.cn/info/1091/1713.htm
8.沈阳市身份证号前六位律师普法沈阳市身份证前六位是210100,身份证号码前六位为地址码,中国大陆居民身份证号码中的地址码的数字编码规则为:第一、二位表示省(自治区、直辖市、特别行政区);第三、四位表示市(地级市、自治州、地区、盟及直辖市所属区和县的汇总码);第五、六位表示县(区、县级市、旗)。 https://www.110ask.com/tuwen/16252586925194734637.html
9.数字识人之身份证尾号看人最后一位号码是0 身份证最后一位号码是0的人,他们比较率性,如果是谈恋爱的时候,经常给人的感觉就是3分钟热度,而且他们对于爱情的要求很高,很少会说因为感动产生爱情,他们也很相信一见钟情。如果是结婚后,就会发现他们的控制欲会有些强,会希望你能随时和他保持联系。 https://www.meipian.cn/2bypg7hb