PHP正则表达式

正则表达式基础:

分隔符:
分隔符有正斜线(/)、hash符号(#) 以及取反符号(~),如:

/foo bar/
#^[^0-9]$#
~php~

修饰符:

修饰符 说明
i 在和正则匹配是不区分大小写 
m 将字符串视为多行。默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此)。如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就是“^”结束就是“$”。 
o 评估表达式只有一次
s 如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。 
x 忽略空白,除非进行转义的不被忽略。 
g   在全局范围内找到所有匹配
cg  即使全局匹配失败也允许搜索继续

分隔符后面可以使用模式修饰符,模式修饰符包括:i, m, s, x等,例如使用i修饰符可以忽略大小写匹配:

$str = "Http://www.baidu.com/";
if (preg_match('/http/i', $str)) {
    echo '匹配成功';
}

量词、元字符与转义:

正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:

\ 一般用于转义字符
^ 断言目标的开始位置(或在多行模式下是行首)
$ 断言目标的结束位置(或在多行模式下是行尾)
. 匹配除换行符外的任何字符(默认)
[ 开始字符类定义
] 结束字符类定义
| 开始一个可选分支
( 子组的开始标记
) 子组的结束标记
? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
* 量词,0 次或多次匹配
+ 量词,1 次或多次匹配
{ 自定义量词开始标记
} 自定义量词结束标记
\s:匹配单个的空白符,包括空格,制表符,换行符
\S:用于匹配除单个空白符之外的所有字符。
\d:用于匹配从0到9的数字,相当于"/[0-9]/"。
\w:用于匹配字母,数字或下划线字符,相当于"/[a-zA-Z0-9_]/"。
\W:用于匹配所有与w不匹配的字符,相当于"/[^a-zA-Z0-9_]/"。
\D:用于匹配任何非10进制的数字字符。
[aeiou]:在给定的集合内匹配一个字符
[^aeiou]:在给定的集合外匹配一个字符
(foo|bar|baz):匹配任何指定的备选方案

如果匹配模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。

/http:\/\//

预定义的字符序列:

[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和数字
[:digit:]:匹配任何数字
[:space:]:匹配空格符
[:upper:]:匹配任何大写字母
[:lower:]:匹配任何小写字母
[:punct:]:匹配任何标点符号
[:xdigit:]:匹配任何16进制数字

reference:

  • PHP官网
  • 极客学院

你可能感兴趣的:(PHP正则表达式)