一、定界符
“/”或“#”
二、元字符
1)+ : 一次或多次
比如:/php+/,能够与“phpp”匹配,即字母ph后面连续出现一个或多个字母p的字符串相匹配。
2)* : 零次或多次,贪婪的,尽可能多的匹配文字
比如:/php*/能够与“phpddt”相匹配,即ph后面可以有0个或多个p
3)? : 零次或一次,消除贪婪
比如:/php?/能够“pher”匹配,即phh后面可以有0个或者1个p
4) \s : 单个空格符,包括tab键和换行符 [ \f\n\r\t\v]
5) \S : 除单个空格符之外的所有字符 [ ^\f\n\r\t\v]
6) \d : 从0到9的数字 [0-9]
7) \D : 非数字 [^0-9]
7) \w : 字母、数字、下划线 [A-Za-z0-9_]
8) \W : 所有与\w不匹配的字符 [^A-Za-z0-9_]
9). : 除换行符\n之外的
10)\r : 单个回车符
示例:/\s+/用于匹配一个或多个空格字符
示例:
$str = '<H1>Chapter 1 - 介绍正则表达式</H1>';
preg_match_all('/<.*>/',$str,$matches);
结果:<H1>Chapter 1 - 介绍正则表达式</H1>,尽可能多的匹配字符
$str = '<H1>Chapter 1 - 介绍正则表达式</H1>';
preg_match_all('/<.*?>/',$str,$matches);
结果:<H1>、</H1>,尽可能少的匹配
三、定位符,匹配模式在目标对象中的位置
1)“^” 开头
2)“$” 结尾
3)\b 开头或结尾的两个边界之一
4)“\B” 开头和结尾两个边界之内
5)()子表达式
6)
四、修饰符,改变表达式的行为
(‘/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i‘)
”i”就是修饰符,表示忽略大小写
另外”x”表示忽略空格
/m 多行模式
/s 单行模式
五、范围
/[A-Z]/
上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/
上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/
上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/
上述正则表达式将会与任何由字母和数字组成的字符串
”[]”只能匹配单个字符 如[a-d],代表a或b或c或d
[^1-5],该字符不是1~5之间的数字
[-+.]\w包含任意- 或+ 或.或\w字符的组合出现0次或多次
六、限定符
如[\w]{3,5}或者[\w]*或者[\w]+这些[\w]后面的符号都表示限定符。
{3,5}表示3到5个字符。{3,}超过3个字符,{,5}最多5个,{3}三个字符。
* 表示0到多个
+ 表示1到多个
七、通配符(lookarounds):断言某些字符串中某些字符的存在与否!
lookarounds分两种:lookaheads(正向预查 ?=)和lookbehinds(反向预查?<=)。
> 格式:
正向预查:(?=) 相对应的 (?!)表示否定意思
反向预查:(?<=) 相对应的 (?<!)表示否定意思
'/(?<=c)d(?=e)/' 表示d前紧跟c,d后紧跟e
'/(?<!c)d(?!e)/' 表示d前不紧跟c,d后不紧跟e
八、同时与多种模式匹配
如/phpddt|100/可以与“phpddt” “100”相匹配
九、需要转义的字符有:
\ . * ^ & [ ] { } ? 等
十、练习
有数字、字母组成的字符串:/^[A-Za-z0-9]+$/
长度为8-10的用户密码(以字母开头、数字、下划线组成):/^[A-Za-z]\w{7,10}/
验证输入只能是汉字 : ^[\u4e00-\u9fa5]{0,}$
验证邮箱:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/