正则表达式 是一种用来匹配字符串的过滤规则。可能是最好的在线测试网站:regex.zjmainstay.cn
正则表达式
常常被称为模式普通字符
:为纯文本元字符
:在正则表达式里是的特殊字符 (比如.
\
[
]
*
^
等等)
用“.”只匹配除换行符外单个任意字符(包括数字、字母和“.”本身等)
.thou
可以匹配 ithou
、uthou
、6thou
、.thou
、!thou
等等
“[]”匹配[]中的某一个字符
[Ii]thou
可以匹配 ithou
、Ithou
[0-9]
0-9中的任意一个数字[a-z]
任意一个小写字母[A-Z]
任意一个大学字母H[0-9]
可以匹配 H1、H2、H3 …… H9A[a-z]
匹配 Aa、Ab、… 、Az
-
在 [] 里面表示 xx 至/到 xx
,a 到 z
, 0 到 9
取非 ^
^
用来排除不需要匹配的字符a[^0-9]
表示不匹配 a 后面带数字的,可以匹配 aa
、aA
、a?
等等[^Ii]love
不匹配 Ilove
、ilove
用转义字符“\”匹配元字符本身
意思匹配那些特殊字符,比如 .
、[
、*
等\[
匹配文本中的[
[\.\]]
.
asdkd{s.adn{sa]
匹配空白字符
\b
回退并删除\n
换行符\r
回车符\t
制表符
匹配数字 & 非数字
[0-9]
和 \d
(小写w)匹配数字[^0-9]
和 \D
匹配非数字
匹配字母,数字和下划线
\w
匹配 数字、字母、下划线
等价于[a-zA-Z0-9\_]
匹配非字母,数字和下划线
\W
匹配 非数字、字母、下划线
等价于 [^a-zA-Z0-9\_]
匹配任意空白字符
\s
(小写s)匹配空格、制表符和换行符等空白字符,等价于 [\n\r\t\f\v]
匹配除空格、制表符和换行符以外的字符
\S
(大写S),等价于 [^\n\r\t\f\v]
“+”匹配 1 ~ n个字符
“?”的两种用法
匹配0个或者1个
非贪婪模式
匹配尽可能少的内容
比如有文本HTML源码:1
<div>a</div> <div>b</div>
使用
<div>.*?</div>
会得到两个结果:<div>a</div>
和<div>b</div>
贪婪模式
而用<div>.*</div>
会得到整个字符串:<div>a</div><div>b</div>
因为它会匹配所有字符直到后面再找不到</div>
竖线“|”匹配子表达式中的分支
(19|20)\d{2}
检验出生年为19xx和20xx年出生的
区间{}
[0-9]{1,3}
表示在0-9的范围里面循环1个、2个或者3个{3}
指定为三个字符{3, }
三个及以上,区间[3, +∞)
{3, n}
指定在区间 [3, n]
“\b”匹配一边是\w字符(英文字母、数字和下划线),另一边不是\w字符的位置(不占用字符)
p\b
匹配 You jump
I jump
. Importan!
^行首
^\w+
匹配到 This
is an example.
文末$
\w+$
匹配到 End of string
对多行也有效
分隔符
在PHP中,分隔符可以使任意非字母数字
、非反斜线
、非空白字符
这是错误的写法/<div>.*?</div>/
#<div>.*?</div>#