4,PHP正则基础

前言


正则表达式的应用非常广泛,最常见的定义,就是一组用来描述字符串规则的特殊组合。
这个组合,描述了某种字符串拼接规则,通过语言提供的函数,去执行处理,去匹配任何符合规则的字符串。

PHP作为“世界上最好用的语言”,当然也提供了对正则的支持。

本文要点


  1. 正则语法
  • PHP对正则的支持
  • PHP的正则函数
  • 修正模式
  • 常见正则表达式

正则语法


这一知识点,比较枯燥,但掌握之后,就会对正则有一定了解
我用思维导图理了一下

4,PHP正则基础_第1张图片
正则语法.png

PHP对正则的支持


PHP对正则的支持,由扩展 PCRE 来提供,PCRE兼容perl的语法。
一般情况下,PCRE在安装PHP时就默认安装好了,但也存在某些没有安装的情况,相关的安装,可以参考PHP的官方手册。直通车
PCRE还提供了一些预定义常量,这些平时不太用到,具体使用时可以参考手册

PHP的正则函数


4,PHP正则基础_第2张图片
functions.png

PHP官方手册上,提供了这些函数,这里,对比较常用的函数进行实例说明


"; print_r($matches); echo "

"; echo preg_match_all($pattern, $subject,$matches); echo "

"; print_r($matches); echo "

"; /** * 正则替换 * $pattern 正则表达式 * $replacement 用于替换的文本 * $subject 被查询的文本 * 和str_replace一样,$pattern和$replacement也支持数组 * $subject 也支持数组,会一一针对这个数组的成员进行替换 * * replace和filter的区别在于,在返回的数组中,前者会保留没有被替换的元素,而后者则只保留被替换过的元素(当subject也是数组时) */ $replacement = 'hellow,perl!'; echo preg_replace($pattern,$replacement,$subject); echo "

"; echo preg_filter($pattern, $replacement, $subject); echo "

"; /** * 正则匹配 */ $input = array('asd411','a5a5a54','jashdjh44','aaaaa'); $arr = preg_grep($pattern, $input); // 没有替换,只有匹配,将数组中匹配的值保留下来,当作返回值返回 // 此函数,可用于将数组中不符合条件的元素过滤掉 print_r($arr); echo "

"; /** * 正则分割 */ $arr = preg_split($pattern, $subject); // 用符合pattern规则的字符串为标志位,分割subject字符串,并返回数组 // explode(delimiter, string) 与这个函数类似 print_r($arr); echo "

"; /** * 正则表达式运算符转义 * . \ * ? [ ^ ] $ ( ) { } = ! < > | : - 正则表达式的运算符 * 转以后,则认为是文本 */ $str = preg_quote($pattern); print_r($str); echo "

"; /** * 总结 * 1,preg开头 * 2,主要使用场景 * preg_match系列 验证等场景 * preg_replace系列 非法词语过滤等场景 */ ?>

修正模式


修正模式实际上就是对当前正则表达式的一种设定,如告诉处理器,你以xxx规则来解析这个表达式
通常,结束符后的那一位指定,被称之为 修修正符


4,PHP正则基础_第3张图片
修正模式.png

常见正则表达式


日常应用中,最常见的表单验证就频繁使用了正则表达式
下面列举几个常用的:

 /.+/ -- 非空
/^[^0]\d+\.\d{2}$/ -- 两位小数的浮点数
/^1[34578]\d11$/ -- 大陆手机号验证
/^\w+(\.(\w|.)+)*@\w+(\.\w+)+$/ --Email地址
/^((http://)|(https://))?(\w+\.)+[a-zA-Z]+/?.+$/  -- URL地址

结语


以上内容,是个人学习时候总结的。主要以理论为主,想要掌握更深,还需动手实践。

本文出自半醒的狐狸博客

你可能感兴趣的:(4,PHP正则基础)