这篇博文将介绍一些常用的数字验证方法,包括整数验证、国内电话号码验证、身份证号码验证、以及IP地址验证等等验证方法,如果大家对基本概念不够了解,可以先看看我之前写的博文。
第一部分:数值验证
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等都属于这个范围,这该怎么验证呢?别着急,我们可以分区间验证:
- 使用\b[1-9]\d{0-2}\b来验证1-999之间的所有正整数
- 使用\b[1-4]\d{3}\b来验证1000-4999之间的所有正整数
- 使用\b5[0-5]\d{2}\b来验证5000-5599之间的所有正整数
- 使用\b56[0-6]\d\b来验证5600-5669之间的所有正整数
- 使用\b567[0-8]\b来验证5670-5678之间的所有正整数
综上所述,我们可以使用如下正则表达式来验证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.实数的验证
这里要介绍的实数的验证是至少包含一个小数点的实数,因此实数就包括了整数部分、小数部分和小数点。
验证方法如下:
复制代码 代码如下:
-"codetitle">复制代码 代码如下:
-"codetitle">复制代码 代码如下:
^-"color: #ff0000">第二部分:4种国内电话号码的验证
我们知道中国的电话号码的形式不外乎有下面四种:
1.手机号码
2.固定电话号码(不包括区号)
3.区号+固定电话号码
4.区号+固定电话号码+分机号
下面我们按照顺序逐一介绍
1.手机号码
目前国内的手机号码多是13开头、15开头和18开头,并且第三位数字目前都有【0-9】这10个数,所以验证起来就很简单了。如下所示:
显然第二种方法更简单一些。
2.固定电话号码(不包括区号)
固定电话号码一般为7位(如2268358)或8位(82668110),所以验证起来是非常简单的,如下所示:
但是,某个地区的电话号码往往是固定在一个具体的范围里的,比如新疆石河子某个地区为2268001-2268999,这时想要确定就需要稍微花一些功夫了。
我们可以把2268001-2268999划分为2268001-2268009和2268010-2268099和2268100-2268999。这样,把验证三者的正则表达式组合起来即可。如下所示:
复制代码 代码如下:
2268((00[1-9])|(0[1-9]\d)|([1-9]\d{2}))
效果如下:
PS 这里就不具体介绍啦,都是很简单的知识,如果有疑问可以看我的上一篇博文,它对基本知识阐述得很具体。
3.区号+固定电话号码验证
区号的长度一般为3-4位,固定电话号码的长度一般为7-8位,比如029-82668110为3位区号和8位固定电话号码的组合,0993-2268358是4位区号和7位固定号码的组合。且在区号和固定号码之间一般都是由-(连字符)链接的。可知,我们只需要对区号和固定电话分别验证即可。
复制代码 代码如下:
\b0\d{2,3}[- ]"//img.jbzj.com/file_images/article/201612/2016122009104910.png" style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(0,0,0); font: medium Simsun; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px" alt="" />
4.区号+固定电话号码验证+分机号码验证
一些比较大的公司、企业或者政府部门在向外部提供固定的电话号码是,除了区号、固定电话号码之外,还可能包括分机号码。
下面我们以4位的分级号码为例。一般在分机号码之前可能是空格,也可能是-(连字符),还可能什么都没有。 于是验证方法如下:
复制代码 代码如下:
\b0\d{2,3}[- ]"//img.jbzj.com/file_images/article/201612/2016122009104911.png" style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(0,0,0); font: medium Simsun; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px" alt="" />
第三部分: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地址验证
我首先ping到了https://www.jb51.net/的IP地址:42.121.252.58。 实际上IP地址一般是1~3位整数.1~3位整数.1~3位整数.1~3位整数,于是我们可以通过下面的正则表达式作简单验证:
([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之间,显然,这里要使用分区间的方法了。
0-99之间可以这样表示:([1-9]\d"codetitle">复制代码 代码如下:
(((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)
演示效果如下:
值得注意的是:分组是至关重要的,只有分对了组,才有可能不出问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]