一、什么是正则表达式:

有一定规则的字符串表达式;一般的正则表达式以“/”开头和结尾,中间写正则表达式;

例如:

<?php
    $myStr = "bulang is coder , bulang blog is very good";
    $regEx = "/bulang/";
    preg_match_all($regEx,$myStr,$result);
    print_r($result);
?>

二、正则查找方式:


1、具体的字符串查找:

<?php
    $myStr = "bulang is coder , bulang blog is very good";
    $regEx = "/\bbulang\b/";//"\b"为单词的开始和结尾
    preg_match_all($regEx,$myStr,$result);
    print_r($result);
?>

2、通过字符集合匹配:

    字符集就是一些字符串的集合如[0123456789]、[abcdefg]、[ABCDEFG]等等。

<?php
//字符集合查询一个数组里面是手机的号元素
    $myArr = array('18335908000','18335908111','123456789','qweqasdzxc');
    $regEx = "/^1[34578]\d{9}$/";
    foreach ($myArr as $k => $v) {
    preg_match_all($regEx,$v,$result);
    print_r($result);
    }
?>

3、字符补集:

    字符补集就是字符集没有的,如[^abc]表示不在abc范围内的意思;

<?php
//用字符补集查询一个数组里面是手机好的元素
    $myArr = array('18335908000','18335908111','123456789','qweqasdzxc');
    $regEx = "/^1[^269]\d{9}$/";
    foreach ($myArr as $k => $v) {
    preg_match_all($regEx,$v,$result);
    print_r($result);
    }
?>

4、字符范围:如[a-zA-Z0-9];

<?php
$myStr = "bulang 2o2 6+1 345 jiecao";
$regEx = "/\b[a-z]*\b/";//a-z直接多个字母组成的单词
preg_match_all($regEx,$myStr,$res);
print_r($res);//只有bulang   jiecao能出来
?>

5、字符边界:

        (1)^ 匹配字符串的开始 ;

        (2)$ 匹配字符串的结尾 ;

        (3)\b 匹配单词的开始和结尾(边界) ;

        (4)\B匹配单词的非边;

6、字符簇即系统定义好的常用集合:

    常见的字符簇如“\d”:匹配数字字符;“\s”:匹配空白字符;等等。详细的查看w3c正则表达式;

<?php
 $str = 'bulang,is     coder    ,you know      ?'; 
 $patt = '/\W{1,}/';//"\W"是"\w"的补集既[a-zA-Z0-9]的补集
 echo preg_replace($patt," ",$str);//输出bulang is coder you know
?>


       

官方公众号