正则通常由两部分组成:元字符+限定符
元字符:代表能代表哪些字符
限定符:修饰前面元字符数量,只对他前面一个元字符起作用
1、常用元字符
元字符 | 意义 |
. | 匹配除换行符以外的任意字符 |
\. | 表示点,需转义 |
\n | 换行 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符(包括空格、换行、回车等) |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结束 |
[a-z] | 小写英文字母 |
[0-9] | 数字 |
[asd] | asd三个字符里取任意一个 |
[\u4e00-\u9fa5] | 汉字 |
[^X] | 取所有,除去X |
2、常用限定符
限定符 | 意义 |
* | 重复0次或更多次(0个以上) |
+ | 重复1次或更多次(1个以上) |
? | 重复0次或1次(0个或1个) |
{n} | 重复n次数 |
{n,m} | 重复n到m次 |
{n,} | 重复n次以上 |
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | ??重复0次或更多次,但尽可能少重复 |
3、正则举例
1)待匹配字符集asdaadaaaeaw
① a*
② a+
③ a?
④ a*?
⑤ a+?
⑥ a??
2)待匹配字符集abaabaseb
3)uuid正则
[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}
4)[^|]+
取出所有除去竖划线|如”1|af516ui-f”,取出2处匹配,匹配结果为1,af516ui-f
5)([\s\S]*)
匹配所有
6)常用正则
可参考http://tool.oschina.net/regex/#
①邮箱
^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$
②匹配url
[a-zA-z]+://[^\s]*
③匹配(年-月-日)日期格式
([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])))
④匹配空白行
\n\s*\r