一、基本符号

1、 ^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)

2、 $ 表示匹配字符串的结束位置

3、 * 表示匹配 零次到多次

4、 + 表示匹配 一次到多次 (至少有一次)

5、 ? 表示匹配零次或一次

6、 . 表示匹配单个字符

7、 | 表示为或者,两项中取一项

8、 ( ) 小括号表示匹配括号中全部字符

9、 [ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]

10、 { } 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m

11、 \ 转义字符 如上基本符号匹配都需要转义字符 如 \ 表示匹配

12、 \w 表示英文字母和数字 \W 非字母和数字

13、 \d 表示数字 \D 非数字

二、常用的正则表达式

1、 匹配中文字符的正则表达式: [u4e00-u9fa5]

2、 匹配双字节字符(包括汉字在内):[^x00-xff]

3、 匹配空行的正则表达式:n[s| ]*r

4、 匹配HTML标记的正则表达式:/<(.)>.</1>|<(.*) />/

5、 匹配首尾空格的正则表达式:(^s)|(s$)

6、 匹配IP地址的正则表达式:/(d+).(d+).(d+).(d+)/g //

7、 匹配Email地址的正则表达式:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*

8、 匹配网址URL的正则表达式:http://(/[w-]+.)+[w-]+(/[w- ./?%&=]*)?

三、MYSQL应用场景

sql语句:^(select|drop|delete|create|update|insert).*$

1、非负整数:^\d+$

2、正整数:^[0-9]1-9$

3、非正整数:^((-\d+)|(0+))$

4、负整数:^-[0-9]1-9$

5、整数:^-?\d+$

6、非负浮点数:^\d+(\.\d+)?$

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

8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$

9、负浮点数:^(-((正浮点数正则式)))$

10、英文字符串:^[A-Za-z]+$

11、英文大写串:^[A-Z]+$

12、英文小写串:^[a-z]+$

13、英文字符数字串:^[A-Za-z0-9]+$

14、英数字加下划线串:^\w+$

15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)))(\?\s*)?$
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$

17、邮政编码:^[1-9]\d{5}$

18、中文:^[\u0391-\uFFE5]+$

19、电话号码:^((\d2,3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

20、手机号码:^((\d2,3)|(\d{3}\-))?13\d{9}$

21、双字节字符(包括汉字在内):^\x00-\xff

22、匹配首尾空格:(^\s)|(\s$)(像vbscript那样的trim函数)

23、匹配HTML标记:<(.)>.<\/\1>|<(.*) \/>

24、匹配空行:\n[\s| ]*\r

25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) = ('|")?(\w|\|\/|\.)+('|"| *|>)?

26、提取信息中的邮件地址:\w+([-+.]\w+)@\w+([-.]\w+)\.\w+([-.]\w+)*

27、提取信息中的图片链接:(s|S)(r|R)(c|C) = ('|")?(\w|\|\/|\.)+('|"| *|>)?

28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

29、提取信息中的中国手机号码:(86)013\d{9}

30、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}

31、提取信息中的中国电话号码(包括移动和固定电话):(\d3,4|\d{3,4}-|\s)?\d{7,14}

32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}

33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+

34、提取信息中的任何数字 :(-?\d*)(\.\d+)?

35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

36、电话区号:/^0\d{2,3}$/

37、腾讯QQ号:^[1-9]1-9$

38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^a-zA-Z{4,15}$

39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

四、Emeditor应用场景

1、 ^[ /t]*/n
这个正则表达式代表所有的空行,指含有零个或零个以上空格或制表符、以换行符结尾、不含其它字符的行。

2、 (^|(?<=中国)).*?(?=中国|$)
用正则表达式匹配特定字符串外的所有字符。指除“中国”外的所有其它字符,类似于反选功能。

3、 ^[ /t]+
查找以上字符,并替换为空,可删除行首空白(包括全半角空格和制表符)。

4、 [ /t]+$
查找以上字符,并替换为空,可删除行末空白(包括全半角空格和制表符)。

5、 ^[ /t]+|[ /t]+$
查找以上正则表达式,并替换为空,可删除行首和行末所有空白(包括全半角空格和制表符)。

6、 匹配中文字符的正则表达式: [/u4e00-/u9fa5]

7、 匹配双字节字符(包括汉字在内):[^/x00-/xff]
注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

8、 匹配空白行的正则表达式:/n/s*/r
评注:可以用来删除空白行

9、 匹配HTML标记的正则表达式:< (/S?)[^>]>.?|< .? />

10、 匹配首尾空白字符的正则表达式:^/s|/s$
注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)

11、 匹配Email地址的正则表达式:/w+([-+.]/w+)@/w+([-.]/w+)/./w+([-.]/w+)*

12、 匹配网址URL的正则表达式:[a-zA-z]+://[^/s]*

13、 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^a-zA-Z{4,15}$

14、 匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7}
注:匹配形式如 0511-4405222 或 021-87888822

15、 匹配腾讯QQ号:1-9{4,}
注:腾讯QQ号从10000开始

16、 匹配中国邮政编码:[1-9]/d{5}(?!/d)

17、 匹配身份证:/d{15}|/d{18}
注:中国的身份证为15位或18位

18、 匹配ip地址:/d+/./d+/./d+/./d+

19、 匹配特定数字:
^[1-9]/d*$ //匹配正整数
^-[1-9]/d*$ //匹配负整数
^-?[1-9]/d*$ //匹配整数
^[1-9]/d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]/d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]/d/./d|0/./d[1-9]/d$ //匹配正浮点数
^-([1-9]/d/./d|0/./d[1-9]/d)$ //匹配负浮点数
^-?([1-9]/d/./d|0/./d[1-9]/d|0?/.0+|0)$ //匹配浮点数
^[1-9]/d/./d|0/./d[1-9]/d|0?/.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]/d/./d|0/./d[1-9]/d))|0?/.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

20、 匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^/w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
注:最基本也是最常用的一些表达式

21、 匹配包括“John”的整行:^.John.$

五、参考文件

  1. 专业文档(英文)-Regular-Expressions.info
  2. 掌握EmEditor正则表达式语法,大大提升工作效率-缙哥哥
  3. 正则表达式详解 | Goku's blog
  4. 常用正则表达式语法大全 校验匹配数字、任意字符、特殊需求-闽南网

本文标签:正则表达式