一、基本符号
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.$