1.常用的正则表达式集合
(1)匹配单个中文字符:[\u4e00-\u9fa5],这是指unicode中文字符范围;
(2)匹配空白行:\n\s*\r
(3)匹配邮箱地址: [\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
(4)匹配网址url:[a-zA-z]+://[^\s]*
(5)匹配国内的电话号码:\d{3}-\d{8}|\d{4}-\{7,8}
(6)匹配QQ号码:[1-9][0-9]{4,}
(7)匹配国内邮政编码:[1-9]\d{5}(?!\d)
(8)匹配身份证号码:^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
(9)匹配年-月-日时间格式:([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
(10)匹配正整数:^[1-9]\d*$
(11)匹配负整数:^-[1-9]\d*$
(12)匹配整数:^-?[1-9]\d*$
(13)匹配非负整数:^[1-9]\d*|0$
(14)匹配非正整数:^-[1-9]\d*|0$
(15)匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
(16)匹配负浮点数:^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$
2.学习正则前所需要了解的几个正则的概念,按照这个思路了解下正则能做哪些事情,看起正则源码会事半功倍。
(1)元字符:正则里面用于定义规则的字符;
(2)字符转义:查找元字符本身,要加上\来转义;
(3)如何重复,表达式重复表示:*(>=1)、+(>=1)、?(0 or 1)、{n}(n次)、{n,}(n次或更多次),{n,m}(n-m次);
(4)非元字符的字符如何表示?直接列出来就行了;
(5)分支条件:一个表达式能同时满足几种可能,相当于在一个表达式中存在几种“或”的关系:用“|”把分支条件隔开即可;
(6)分组/子表达式:用()来表示分组/子表达式,以方便指定重复次数;
(7)反义,就是匹配出了某个规则以外的内容:
\W匹配不是字母、数字、下划线、汉字的字符;
\S匹配任意不是空白符的字符;
\D匹配任意非数字的字符;
\B匹配任意不是单词开头或者结束的字符;
[^x]匹配除了x以外的任意字符;
[^aeIoU]匹配出了aeIoU这几个字母以外的任意字符;
(8)未完待补充,还没学习完
3.针对上述(1)中常用正则表达式进行逐个解析、学习、总结的结果
(1)正则表达式[]、{}、()的意思
[]表示所需要匹配的字符范围,[a-zA-Z0-9],表示相应的字符要匹配英文字符和数字。
{}匹配字符的长度,比如\s{3}表示3个空格,\s{1,3}表示1-3个空格;
()提取匹配的字符串,(\s*)表示连续空格的字符串。
(2)元字符
\n 换行符
\s 任意的空白格,包括空格、制表符、换行符、中文全角空格等;
* 表示当前匹配重复任意次(包括0次)
\r 回车
+ 表示当前匹配1次或者更多次
\w 匹配字母、数字、下划线、汉字
\b 以字母开头或者结尾的内容
^ 字符串开始
$ 字符串结束
参考引用:
http://tool.oschina.net/regex/#
http://deerchao.net/tutorials/regex/regex.htm
上述中邮箱地址还没有完全看懂,需要继续看。