• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 详解正则表达式之数字验证

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

作者:918之初 字体:[增加 减小] 来源:互联网 时间:2017-05-11

918之初通过本文主要向大家介绍了正则表达式详解,java正则表达式详解,js正则表达式详解,python正则表达式详解,正则详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

这篇博文将介绍一些常用的数字验证方法,包括整数验证、国内电话号码验证、身份证号码验证、以及IP地址验证等等验证方法,如果大家对基本概念不够了解,可以先看看我之前写的博文。

第一部分:数值验证

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

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

\d{6}
[0-9]{6}
\d\d\d\d\d\d
</div>

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

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])$
</div>

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

  

怎么成这样了呢???后面的三个数的验证都不是我们想要的效果啊!!这是因为正则表达式在匹配时会从左向右匹配,其中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})$
</div>

效果如下:

 

这次令我们高兴的是在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})$
</div>

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

 

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

从这个例子受到启发,我们对于指定范围内的正整数的验证的第一个例子中的每一个分组后添加$或\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])$
</div>

6.实数的验证

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

 验证方法如下:

-?(0|([1-9]\d*))\.\d+
</div>

其中-?表示可以有负号也可以没有负号,(0|[1-9]\d*)表示整数部分可以是0也可以是不以0开头的其他整数,\.是为了对元字符.进行转义,\d+表示在小数点后面可以有1个或多个数字重复。所以它可以用来验证一般形式的实数(如0.0、1.2、-1.20等),还可以用来验证负0,如-0.0、-0.00等。

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

-?(0|([1-9]\d*))\.\d{3}$
</div>

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

7.科学计数法的验证

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

^-?[1-9](\.\d+)?\*10\^-?\d+$
</div>

第二部分:4种国内电话号码的验证

我们知道中国的电话号码的形式不外乎有下面四种:

1.手机号码

2.固定电话号码(不包括区号)

3.区号+固定电话号码

4.区号+固定电话号码+分机号

下面我们按照

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 正则表达式教程之前后查找lookaround详解
  • 正则表达式教程之位置匹配详解
  • 正则表达式教程之重复匹配详解
  • 正则表达式教程之匹配一组字符详解
  • 正则表达式教程之匹配单个字符详解
  • 正则表达式教程之操作符及说明详解
  • 详解基于Linux下正则表达式(基本正则和扩展正则命令使用实例)
  • 正则表达式分组实例详解
  • 详解正则表达式之数字验证
  • 详解js正则表达式语法介绍

相关文章

  • 2017-05-11正则替换实现输入框只能有数字、中英文逗号
  • 2017-05-11js mac地址 正则表达式
  • 2017-05-11asp正则过滤重复字符串的代码
  • 2017-05-11PHP 正则表达式验证中文的问题
  • 2017-05-11除捕获组的语法外,其它的(?...)语法都不是捕获组的验证
  • 2017-05-11JavaScript中的正则表达式解析
  • 2017-05-11一个验证用户名的正则表达式
  • 2017-05-11php 正则表达式提取网页超级链接url的函数
  • 2017-05-11表单 数字字符验证正则
  • 2017-05-11正则表达式\W元字符使用方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Python爬虫正则表达式常用符号和方法
    • 超常用的PHP正则表达式收集整理
    • 自定义ubb代码,preg_replace()函数的一些代码
    • javascript将字符串中的多个空格替换为一个空格的正则实例
    • 我的正则
    • JAVA中正则表达式小总结(整理)
    • Javascrp中几个常用的字符串验证
    • 正则表达式——详细讲解平衡组
    • 通过Java正则表达式去掉SQL代码中回车换行和多余空格
    • 正则删除字符串左、右或两端的空格经验总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有