博客
关于我
最全常用正则表达式大全
阅读量:311 次
发布时间:2019-03-01

本文共 5698 字,大约阅读时间需要 18 分钟。

正则表达式参考手册

一、校验数字的表达式

  • 数字:

    ^[0-9]*$
    匹配任意长度的数字字符串。

  • n位的数字:

    ^\d{n}$
    匹配恰好n位数字。

  • 至少n位的数字:

    ^\d{n,}$
    匹配至少n位数字。

  • m-n位的数字:

    ^\d{m,n}$
    匹配m到n位之间的数字。

  • 零和非零开头的数字:

    ^(0|[1-9][0-9]*)$
    匹配零或以非零开头的数字。

  • 非零开头的最多带两位小数的数字:

    ^([1-9][0-9]*)+\.([0-9]{1,2})?$
    匹配非零开头且最多带两位小数的数字。

  • 带1-2位小数的正数或负数:

    ^(-?\d+(\.\d{1,2}))?$
    匹配带1-2位小数的正数或负数。

  • 正数、负数、和小数:

    ^(-|\+)?\d+(\.\d+)?$
    匹配正数、负数和带小数的数。

  • 有两位小数的正实数:

    ^[0-9]+(\.[0-9]{2})?$
    匹配有两位小数的正实数。

  • 有1~3位小数的正实数:

    ^[0-9]+(\.[0-9]{1,3})?$
    匹配1~3位小数的正实数。

  • 非零的正整数:

    ^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

    匹配非零的正整数。

  • 非零的负整数:

    ^-[1-9]\d*$ 或 ^-[1-9]\d*$

    匹配非零的负整数。

  • 非负整数:

    ^\d+$ 或 ^[1-9]\d*|0$

    匹配非负整数。

  • 非正整数:

    ^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

    匹配非正整数。

  • 非负浮点数:

    ^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

    匹配非负浮点数。

  • 非正浮点数:

    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

    匹配非正浮点数。

  • 正浮点数:

    ^([1-9]\d*\.\d*)|([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)$

    匹配正浮点数。

  • 负浮点数:

    ^-([1-9]\d*\.\d*)|^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

    匹配负浮点数。

  • 浮点数:

    ^-?\d+(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

    匹配浮点数。

  • 二、校验字符的表达式

  • 汉字:

    [\u4e00-\u9fa5]{0,}
    匹配0到多个汉字。

  • 英文和数字:

    ^[A-Za-z0-9]+$^[A-Za-z0-9]{4,40}$
    匹配英文和数字组成的字符串。

  • 长度为3-20的所有字符:

    .{3,20}$
    匹配长度为3到20的任意字符。

  • 由26个英文字母组成的字符串:

    ^[A-Za-z]+$
    匹配26个英文字母组成的字符串。

  • 由26个大写英文字母组成的字符串:

    ^[A-Z]+$
    匹配26个大写英文字母组成的字符串。

  • 由26个小写英文字母组成的字符串:

    ^[a-z]+$
    匹配26个小写英文字母组成的字符串。

  • 由数字和26个英文字母组成的字符串:

    ^[A-Za-z0-9]+$
    匹配数字和英文字母组成的字符串。

  • 由数字、26个英文字母或者下划线组成的字符串:

    \w+$\w{3,20}$
    匹配数字、英文字母或下划线组成的字符串。

  • 中文、英文、数字包括下划线:

    [\u4e00-\u9fa5A-Za-z0-9_]+$
    匹配中文、英文、数字和下划线。

  • 中文、英文、数字但不包括下划线等符号:

    [\u4e00-\u9fa5A-Za-z0-9]+$[\u4e00-\u9fa5A-Za-z0-9]{2,20}$
    匹配中文、英文、数字组成的字符串。

  • 可以输入含有%、&、’、;、=?、$等字符:

    [^%&'’;=?$\x22]+$
    匹配包含特殊字符的字符串。

  • 禁止输入含有~的字符:

    [^~\x22]+$
    匹配不含~和"的字符串。

  • 三、特殊需求表达式

  • Email地址:

    ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    匹配电子邮件地址。

  • 域名:

    [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.
    匹配域名。

  • InternetURL:

    [a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    匹配互联网URL。

  • 手机号码:

    ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    匹配手机号码。

  • 电话号码:

    ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
    匹配电话号码。

  • 国内电话号码:

    \d{3}-\d{8}|\d{4}-\d{7}
    匹配国内电话号码。

  • 身份证号:

    ^\d{15}|\d{18}$
    匹配身份证号码。

  • 短身份证号码:

    ^([0-9]){7,18}(x|X)?$^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
    匹配短身份证号码。

  • 帐号:

    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    匹配帐号。

  • 密码:

    ^[a-zA-Z]\w{5,17}$
    匹配密码。

  • 强密码:

    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
    匹配强密码。

  • 日期格式:

    ^\d{4}-\d{1,2}-\d{1,2}$
    匹配日期格式。

  • 一年的12个月:

    ^(0?[1-9]|1[0-2])$
    匹配12个月。

  • 一个月的31天:

    ^((0?[1-9])|((1|2)[0-9])|30|31)$
    匹配31天。

  • 钱的输入格式:

    ^[1-9][0-9]*$
    匹配钱的输入格式。

  • 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":

    ^[1-9][0-9]*$
    匹配钱的表示形式。

  • 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:

    ^(0|[1-9][0-9]*)$
    匹配不以0开头的数字。

  • 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:

    ^(0|-?[1-9][0-9]*)$
    匹配数字。

  • 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:

    ^[0-9]+(.[0-9]+)?$
    匹配数字。

  • 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:

    ^[0-9]+(.[0-9]{2})?$
    匹配数字。

  • 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:

    ^[0-9]+(.[0-9]{1,2})?$
    匹配数字。

  • 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:

    ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    匹配数字。

  • 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:

    ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
    匹配数字。

  • 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

    ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
    匹配XML文件。

  • 中文字符的正则表达式:

    [\u4e00-\u9fa5]
    匹配汉字。

  • 双字节字符:

    [^\x00-\xff]
    匹配双字节字符。

  • 空白行的正则表达式:

    \n\s*\r
    匹配空白行。

  • HTML标记的正则表达式:

    <(\S*?)[^>]*>.*?</\1>|<.*? />
    匹配HTML标记。

  • 首尾空白字符的正则表达式:

    ^\s*|\s*$(^\s*)|(\s*$)
    匹配首尾空白字符。

  • 腾讯QQ号:

    [1-9][0-9]{4,}
    匹配腾讯QQ号。

  • 中国邮政编码:

    [1-9]\d{5}(?!\d)
    匹配中国邮政编码。

  • IP地址:

    \d+\.\d+\.\d+\.\d+
    匹配IP地址。

  • IP地址(详细版):

    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
    匹配详细的IP地址。

  • 校验IP-v4地址:

    \\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
    匹配IP-v4地址。

  • 校验IP-v6地址:

    (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])
    匹配IP-v6地址。

  • 子网掩码:

    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
    匹配子网掩码。

  • 日期:

    ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)?$
    匹配日期,已考虑平闰年。

  • 提取注释:

    <!--(.*?)-->
    匹配HTML注释。

  • CSS属性:

    \\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}
    匹配CSS属性。

  • 提取页面超链接:

    (<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^" rel="external nofollow" ]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>
    匹配网页超链接。

  • 提取网页图片:

    \\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)
    匹配网页图片。

  • 提取网页颜色代码:

    ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
    匹配网页颜色代码。

  • 文件扩展名效验:

    ^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$
    匹配文件扩展名。

  • 判断IE版本:

    ^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$
    匹配IE浏览器版本。

  • 四、其他特殊需求

  • *.匹配除 \n 以外的任何字符。

    .*
    匹配除换行符外的任何字符。

  • 汉字匹配:

    \u4e00-\u9fa5
    匹配汉字。

  • 全角符号匹配:

    \uFF00-\uFFFF
    匹配全角符号。

  • 半角符号匹配:

    \u0000-\u00FF
    匹配半角符号。

  • 五、参考资料

    转载地址:http://lslo.baihongyu.com/

    你可能感兴趣的文章
    Netpas:不一样的SD-WAN+ 保障网络通讯品质
    查看>>
    NetScaler的常用配置
    查看>>
    netsh advfirewall
    查看>>
    NETSH WINSOCK RESET这条命令的含义和作用?
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    Netty事件注册机制深入解析
    查看>>
    Netty原理分析及实战(四)-客户端与服务端双向通信
    查看>>
    Netty客户端断线重连实现及问题思考
    查看>>
    Netty工作笔记0006---NIO的Buffer说明
    查看>>
    Netty工作笔记0007---NIO的三大核心组件关系
    查看>>
    Netty工作笔记0011---Channel应用案例2
    查看>>
    Netty工作笔记0013---Channel应用案例4Copy图片
    查看>>
    Netty工作笔记0014---Buffer类型化和只读
    查看>>
    Netty工作笔记0020---Selectionkey在NIO体系
    查看>>
    Vue踩坑笔记 - 关于vue静态资源引入的问题
    查看>>
    Netty工作笔记0025---SocketChannel API
    查看>>
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>