正则通常由两部分组成:元字符+限定符
元字符:代表能代表哪些字符
限定符:修饰前面元字符数量,只对他前面一个元字符起作用
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 . _][email protected]([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