一、什么是正则表达式:
有一定规则的字符串表达式;一般的正则表达式以“/”开头和结尾,中间写正则表达式;
例如:
<?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 ?>