一、定义
正则表达式是为了在数据中搜索、匹配和替换特定模式的文本字符串,正则表达式是字符串,而且一定要写//符号代表是正则表达式,那就是'/正则表达式/'或"/正则表达式/"
二、Perl风格函数
1、preg_grep()
搜索数组中的所有元素,返回与某个模式匹配的字符串数组
$input = array("apple", "banana", "orange");
$result = preg_grep('/^a/', $input);
print_r($result);
//输出结果为:
Array
(
=> apple
)
2、preg_match()
搜索模式,匹配返回true,不匹配返回false
echo preg_match('/php[0-9]/','php5');//返回1
3、preg_match_all(正则表达式,匹配字符串,匹配的东西放入数组)
在字符串匹配模式的所有出现,然后将所有匹配的全部放入数组
$a='5678'
var_dump(preg_match_all('/7/',$a,$text)) /输出int(1),匹配到7只出现1次,放到数组text里面吗
4、preg_quote()
将特殊字符转义
特殊字符包含 $ ^ * () + = {} [] | \ : <>
定界正则,在每一个对于正则表达式语法而言有特殊含义的字符前插入一个反斜杠
echo preg_quote(' $ ^ * () + = {} [] | \\ : <>');
//结果为 \$ \^ \* \(\) \+ \= \{\} \[\] \| \\ \: \<\>
5、preg_replace(正则表达式,替换成什么,匹配字符串)
替换模式的所有出现,然后替换成想要的字符串返回出来
$a='1234';
var_dump(preg_replace('/1/','a',$a)); //输出string(9)'a234'
6、preg_split()
以不区分大小写将字符串划分不同的元素
$str = preg_split('/a/', 'cbabc');
print_r($str); //结果为Array ( [0] => cb [1] => bc )
三、转义字符
匹配正则中的特殊字符:\
数字:\d
非数字:\D
空白字符(空格、制表符、换页符等):\s
非空白字符:\S
字典字符(26个字母+数字+下划线):\w
非字典字符:\W
echo preg_match('/\d/', '123456');//返回1
echo preg_match('/\D/', '123456');//返回0
echo preg_match('/\s/', ' ');//返回1
echo preg_match('/\S/', ' ');//返回0
echo preg_match('/\w/', 'aD45_');//返回1
echo preg_match('/\W/', 'aD45_');//返回0
四、自定义字符集合
字符集合:[单个字符和字符区间],用于匹配集合内字符如:
[a-z] 匹配任何包含小写字母a-z的字符串
[A-Z] 匹配任何包含大写字母A-Z的字符串
[0-9] 匹配任何包含0-9的字符串
[a-zA-Z0-9_] 匹配任何包含a-zA-Z0-9和下划线的字符串
[135a-h] 匹配包含数字1、3、5和字母a-h这8个字母
非集:[^单个字符和字符区间],^就是非的意思,如:
[^0-9] 匹配所有非数字字符
[^a-zA-Z] 匹配所有非字母字符
五、关键字
1、()就是优先运算,比如4+(3*2)=4+6=10
2、^就是匹配字符串的开头,就是以什么开头的意思(这个和上面[^]不一样)
echo preg_match('/^a/','bac');//返回0
echo preg_match('/^a/','abc');//返回1
3、$就是匹配字符串的结尾,就是以什么结尾的意思
echo preg_match('/a$/','abc');//返回0
echo preg_match('/a$/','cba');//返回1
4、+介绍匹配一次或者多次
echo preg_match('/a+/','abc');//返回1
5、*就是匹配0次或者多次
echo preg_match('/a*/','abc');//返回1
6、.就是通配符(表示任意字符,可以匹配一切)
echo preg_match('/./','abc');//返回1
7、| 就是选择匹配字符串的左边或右边
echo preg_match('/a|b/','a');//返回1
echo preg_match('/a|b/','b');//返回1
六、修饰符
/i 就是不区分大小写
/A 就是匹配规则必须从头开始匹配
/x 就是正则表达式中的空白字符会被忽略
/U 就是禁止贪婪匹配,只跟踪到最近的一个匹配符并结束