1、 常用的元字符
. |
匹配除换行符以外的任意字符 |
|
\w |
匹配字母或数字或下划线,[a-zA-Z0-9] |
|
\s |
匹配任意的空白符,[\t\n\r\f] |
|
\d |
匹配数字,[0-9] |
|
\b |
匹配单词的开始或结束 |
|
^ |
匹配字符串的开始 |
|
$ |
匹配字符串的结束 |
\W |
与\w相反,[^a-zA-Z0-9] |
|
\S |
与\s相反,[^\t\n\r\f] |
|
\D |
与\d相反,[^0-9] |
|
\B |
匹配不是单词开头或结束的位置 |
|
[^aeIoU] |
匹配除了aeIoU这几个字母以外的任意字符 |
* |
重复零次或更多次 |
|
+ |
重复一次或更多次 |
|
? |
重复零次或一次 |
|
{n} |
重复n次 |
|
{n,} |
重复n次或更多次 |
|
{n,m} |
重复n到m次 |
捕获 |
(exp) |
匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) |
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) |
|
(?:exp) |
匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
|
零宽断言 |
(?=exp) |
匹配exp前面的位置 |
(?<=exp) |
匹配exp后面的位置 |
|
(?!exp) |
匹配后面跟的不是exp的位置 |
|
(?<!exp) |
匹配前面不是exp的位置 |
|
注释 |
(?#comment) |
不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |
*? |
重复任意次,但尽可能少重复 |
+? |
重复1次或更多次,但尽可能少重复 |
?? |
重复0次或1次,但尽可能少重复 |
{n,m}? |
重复n到m次,但尽可能少重复 |
{n,}? |
重复n次以上,但尽可能少重复 |
(?'group') |
把捕获的内容命名为group,并压入堆栈(Stack) |
(?'-group') |
从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败 |
(?(group)yes|no) |
如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分 |
(?!) |
零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败 |
网址(URL) |
[a-zA-z]+://[^\s]* |
IP地址 |
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) |
电子邮件 |
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* |
QQ号码 |
[1-9]\d{4,} |
<(.*)(.*)>.*<\/\1>|<(.*) \/> |
|
密码(由数字/大写字母/小写字母/标点符号组成,四种都必有,8位以上) |
(?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ |
日期(年-月-日) |
(\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1])) |
日期(月/日/年) |
((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2}) |
时间(小时:分钟,24小时制) |
((1|0?)[0-9]|2[0-3]):([0-5][0-9]) |
汉字(字符) |
[\u4e00-\u9fa5] |
[\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee] |
|
中国大陆固定电话号码 |
(\d{4}-|\d{3}-)?(\d{8}|\d{7}) |
中国大陆手机号码 |
1\d{10} |
中国大陆邮政编码 |
[1-9]\d{5} |
中国大陆身份证号(15位或18位) |
\d{15}(\d\d[0-9xX])? |
非负整数(正整数或零) |
\d+ |
正整数 |
[0-9]*[1-9][0-9]* |
负整数 |
-[0-9]*[1-9][0-9]* |
整数 |
-?\d+ |
小数 |
(-?\d+)(\.\d+)? |