正则表达式

preg_replace()支持数组替换

$p      =array('/[0-3]/','/[4-6]/','/[7-9]/');
$replace=array('你','好','啊');
$sub="0scsd4jff8jndjd";
$str1=preg_replace($p,$replace,$sub);
show($str1);

如果目标字符串是数组,则preg_replace会输出所有的元素,而preg_filter()只保留替换后的元素

$p      =array('/[0-3]/','/[4-6]/','/[7-9]/');
$replace=array('你','好','啊');
$sub=array('jhdh3','jhb','dhcd7','s34','ooi');
$str1=preg_replace($p,$replace,$sub);
show($str1);

 

preg_grep()是阉割版的preg_filter,输出符合模式的原字符串而不进行匹配

preg_split($pattert,$subject);explode();  根据pattern把字符串分割为数组

preg_quote($str)正则运算符转移

 

 

界定符 表示一个正则表达式的开始和结束  常用/……/   或 #……#

正则表达式工具  regexpal

原子

  可见原子

  不可见原子:换行符\n   回车\r  制表符\t  空格直接在模式中键入空格就可以匹配到了

建议:匹配中文的时候最好把要匹配的中文转换成unicode编码,再写进模式,以防止编码问题出现的匹配错误。工具:unicode编码转换工具

原子的集合

.  匹配除换行符之外的任意字符

\d  匹配任意一个十进制数字,即[0-9]

\s  匹配一个不可见原子,即[\f\n\r\t\v]

\w  匹配任意一个数字,字母,下划线,即[a-zA-Z0-9_]

 

量词

{n} n次

{n,}  至少n次

{n.m}  n到m次

*  零到多次

+  1到多次

?  零到1次

 

边界控制

^  匹配字符串开始的位置

$  匹配字符串结束的位置

模式单元

()匹配其中的整体为一个原子

 

贪婪匹配(默认):结果存在歧义时取其长

懒惰匹配(在结束界定符后加大写的U):结果存在歧义时取其短

比如:$pattern='/imooc.+123/'

   $subject="I love imooc__123456789";

默认的贪婪模式匹配输出为:imooc__123456789

把模式改为:$pattern='/imooc.+123/U';

即懒惰匹配,输出为:imooc__123

常见修正模式

U  懒惰匹配

i  忽略大小写

x  忽略正则表达式中的空白

s  让元字符 ' . ' 匹配包括换行符在内的所有字符

 

常见正则表达式

非空  .+

保留两位小数的浮点数  \d+\.\d{2}$   应用:货币……

中国大陆手机号:共11位,第一位是1,第二位是3|4|5|7|8    1(3|4|5|7|8)\d{9}

email ,没有权威模式  ^\w+(\.\w+)*@\w+\.(\w+)+$

url http://www.baidu.com    协议:://域名.顶级域名(协议可有可无常见的有http和HTTPS,顶级域名一定为字母)

^(https?://)?(\w+\.)+[a-zA-Z)+$  第一个?表示http后面的s可有可无,第二个问号表示整个协议可有可无

  

 

posted @ 2017-10-26 14:11  yolo_bean  阅读(145)  评论(0编辑  收藏  举报