正则表达式 是一种用来匹配字符串的过滤规则。可能是最好的在线测试网站: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>#