概括知识点:1.通用字符 2.元字符 3.函数
基本知识
1.认识转义字符:
转义字符作为原子: \' \" \* \? \.
单双引号:双引号可以解析转义字符,而单引号不行,其它等价
2.通用字符作为原子:
\d 数字 [0-9]
\D 非数字 [^0-9]
\s 空白
\S 非空白
\w 字母,数字,下划线 [a-zA-Z0-9_]
\W 非字母,数字,下划线 [^a-zA-Z0-9_]
3.自定义原子表
[] 在原子表中,如果没有出现其它修饰符,则选择一个原子
$preg = '/[aj]sp/'; // 三个原子 包含,asp,jsp
$preg = '/[^aj]sp/'; // 除了 asp,jsp 都可以匹配
4.字符串边界
$preg = '/^rs$/'; // 1.r开头 ,2.s结尾 ,3.只有两个原子
5.词边界
$preg = '/\bno\b/'; // 字符no两边是边界
$preg = '/\B\w\w\B/'; // 两个原子,左右两边非词边界
6.重复匹配
? 匹配0次或1次其前的原子
+ 匹配1次或多次其前的原子
* 匹配0次、1次或多次其前的原子
. 任意字符,除了换行符外,都能匹配(特殊)
7.原子表
$preg = '/[abc]e/'; // ae,be,ce
8.分支选择
$preg = '/cindy|peter/'; // 能匹配的元素:cindy或peter
$preg = '/\.(jpg|gif|png)/';// 匹配后缀 jpg,gif,png
9.引用
// 反向引用 \1 --> 引用第一个括号,\2 --> 引用第二个括号
$preg = '/([a-z])([A-Z])\\2\\1/';(结果有点疑问)
10.花括号
{n} 当前原子只能出现 n 次
{n,} 当前原子最少出现 n 次
{n,m} 当前原子最少出现 n 次,最多 m 次
11.模式修正符(不是很懂)
i 不区分大小写
m 视为多行
s 让 任意字符 . 识别换行符
x 模式中的空白
U 在正则中,默认就是贪婪模式,以最广范围匹配, U 取消贪婪模式
正则函数
<?php
$preg = '/^1[345678]\d{9}$/';
$list = [
'asodifoaisd',
'13922130889',
'13122130889'
];
// 返回与正则相匹配的元素,返回的是一个数组
$res = preg_grep($preg , $list);
/*Array
(
[1] => 13922130889
[2] => 13122130889
)*/
if(preg_match_all($preg , $str , $list)){
echo '<font color="green">匹配成功!</font>';
}else{
echo '<font color="red">匹配失败!</font>';
}
// 匹配到的$str存储到$list中,是一个二维数组
/*Array
(
[0] => Array
(
[0] => dd
[1] => dd
[2] => dd
)
)*/