PHP学习笔记--正则表达式及PCRE兼容正则表达式函数

正则表达式手册。点击查看
PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
正则表达式在线测试工具:http://tool.oschina.net/regex/
1、^ :表示行的开始。
2、$ :表示行的结尾。
3、\b :匹配单词的边界。
4、\B :匹配非单词的边界。
5、[ ] :不区分大小写。(正则表达式是区分大小写的)
6、| :或。
7、- :连字符,表示字符串的范围。
8、[^] :排除字符.
9、? :匹配前面的字符一次或0此。
10、+ :匹配前面的字符一次或多次。
11、* : 匹配前面的字符0次或多次。
12、{n} : 匹配前面的字符n次。
13、{n,} : 匹配前面的字符至少n次。
14、{n,m} : 匹配前面的字符至少n次,最多m次。
15、. : 匹配换行符以外的任意一个字符。
16、\ : 转义字符。

PCRE兼容正则表达式函数
1、preg_grep()

<?php
    $preg = "/\d{3,4}-?\d{7,8}/";  //国内电话格式的表达式
    $arr = array('0530-7854685','15550172338','4317622','010-4317622');
    $preg_arr = preg_grep($preg, $arr);  //查找数组中匹配的元素
    var_dump($preg_arr);
?>

结果显示:
PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
2、preg_match() 和 preg_match_all()

<?php
    $str = 'This is an example!';
    $preg = '/\b\w{2}\b/'; //有两个字符组成的子串
    $num1 = preg_match($preg,$str,$str1); //只匹配1次,并返回匹配的次数,存储到$str1数组中,$str1为可选参数
    echo $num1.'<br/>';
    var_dump($str1);
    $num2 = preg_match_all($preg,$str,$str2);//只匹配所有的次数,并返回匹配的次数,存储到$str2数组中,$str2为可选参数
    echo $num2.'<br/>';
    var_dump($str2);
?>

结果返回:
PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
3、preg_quote()

<?php
    $str = '!,@,#,$,%,^,<,>,&';
    $math = preg_quote($str);  //将所有特殊字符进行转义
    echo $math;
?>

结果显示:
PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
4、preg_replace()

<?php
    $str = '[b]粗体字[/b]';
    $rst = preg_replace('/\[b\](.*)\[\/b\]/i', '<b>$1</b>', $str);  
    echo $rst;
?>

结果显示:
PHP学习笔记--正则表达式及PCRE兼容正则表达式函数
5、preg_replace_callback()
6、preg_split()