正则表达式

正则表达式

一、正则表达式简介

  正则表达式(Regular Expression)是一种文本模式,包括普通字符(如字母和数字)和特殊字符(也就是元字符),它使用单个字符串来描述、匹配一系列的符合某个句法规则的字符串

  许多程序设计语言都支持正则表达式来进行字符串的操作。

  正则表达式描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二、正则表达式语法

  正则表达式是由普通字符以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

1、普通字符

  普通字符包括没有显式指定为元字符的所有可打印不可打印字符。可打印字符包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

  不可打印字符包括一些转义字符:

2、特殊字符(元字符)

  特殊字符,就是一些有特殊含义的字符,在试图匹配它们时要特别对待,若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\ 放在它们前面。

3、限定字符(量词)

  限定字符又叫量词,是用于表示匹配的字符数量的。指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。

4、定位符

  定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界。

  注意:不能将限定符与定位符一起使用。

三、正则表达式优先级

  正则表达式优先级从高到低排序:

四、常用正则表达式

1、校验数字的表达式

(1)数字:[1]*$

(2)n位的数字:^\d{n}$

(3)至少n位的数字:^\d{n,}$

(4) m-n位的数字:^\d{m,n}$

(5)零和非零开头的数字:^(0|[1-9][0-9]*)$

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

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

(8)正数、负数、和小数:^(-|+)?\d+(.\d+)?$

(9)有两位小数的正实数:[2]+(.[0-9]{2})?$

(10)有1~3位小数的正实数:[3]+(.[0-9]{1,3})?$

(11) 非零的正整数:[4]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]*$

(12)非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$

(13) 非负整数:^\d+$ 或 [5]\d*|0$

(14)非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

(15) 非负浮点数:^\d+(.\d+)?$ 或 [6]\d.\d|0.\d[1-9]\d|0?.0+|0$

(16)非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d.\d|0.\d[1-9]\d))|0?.0+|0$

(17)正浮点数:[7]\d.\d|0.\d[1-9]\d$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$

(18)负浮点数:^-([1-9]\d.\d|0.\d[1-9]\d)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

(19)浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d.\d|0.\d[1-9]\d|0?.0+|0)$

2、检验字符的表达式

(1)汉字:[8]{0,}$

(2)英文和数字:[9]+$ 或 [10]{4,40}$

(3) 长度为3-20的所有字符:^.{3,20}$

(4)由26个英文字母组成的字符串:[11]+$

(5) 由26个大写英文字母组成的字符串:[12]+$

(6) 由26个小写英文字母组成的字符串:[13]+$

(7) 由数字和26个英文字母组成的字符串:[14]+$7

(8) 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

(9)中文、英文、数字包括下划线:[15]+$

(10)中文、英文、数字但不包括下划线等符号:[16]+$ 或 [17]{2,20}$

3、特殊需求的表达式

(1) Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

(2)域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

(3)手机号码:^(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}$

(4)身份证号(15位、18位数字):^\d{15}|\d{18}$

(5)日期格式:^\d{4}-\d{1,2}-\d{1,2}

(6)IP地址:((?😦?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

(7)xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$

本文参考:菜鸟教程

常用正则表达式来源于:

作者:fozero
文章出处:https://www.cnblogs.com/fozero
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


  1. 0-9 ↩︎

  2. 0-9 ↩︎

  3. 0-9 ↩︎

  4. 1-9 ↩︎

  5. 1-9 ↩︎

  6. 1-9 ↩︎

  7. 1-9 ↩︎

  8. \u4e00-\u9fa5 ↩︎

  9. A-Za-z0-9 ↩︎

  10. A-Za-z0-9 ↩︎

  11. A-Za-z ↩︎

  12. A-Z ↩︎

  13. a-z ↩︎

  14. A-Za-z0-9 ↩︎

  15. \u4E00-\u9FA5A-Za-z0-9_ ↩︎

  16. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  17. \u4E00-\u9FA5A-Za-z0-9 ↩︎

posted @ 2019-04-15 12:16  gzshan  阅读(3056)  评论(0编辑  收藏  举报