正则表达式
正则表达式
一、正则表达式简介
正则表达式(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,}$
(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
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。