[php]正则表达式

定义

正则表达式是一种具有特定模式用于匹配文本字符串

作用

查找,匹配,替换,分割

定界符

  • 作用:模式需要由定界符闭合包括。

  • 元素:定界分隔符可以使用任意非数字字母下划线以及空白字符。

  • 举例:经常使用的分隔符为正斜线(\),hash符号(#)以及取反符号(~).

  • 注意:如果分隔符需要在模式内进行匹配,它必须使用反斜线(\)进行转义

通用原子

  • \d 匹配任何一个数字 [0-9]
  • \D 匹配任何一个非数字 [^0-9]
  • \w 匹配任何一个数字字母下划线 [0-9a-zA-Z]
  • \W 匹配任何一个非数字字母下划线 [^0-9a-zA-Z]
  • \s 匹配任何一个空白字符 [\t\n\r\v]
  • \S 匹配任何一个非空白字符 [^\t\n\r\v]

元字符

  • 定义:在正则表达式中具有特殊含义的专用字符
  • . 匹配除换行以外的任意字符
  • | 匹配多个分支选择
边界修饰符
  • ^ 匹配一行的开头位置(也是取反的符号)
  • $ 匹配一行的结束位置
  • \b 单词边界(只对英文单词有效)
  • \B 非单词边界
量词
  • * 0次或多次 >=0
  • + 1次或多次 >=1
  • ? 0次或1次 =0或=1
  • {n} 重复n次
  • {n,} 重复n次或以上
  • {n,m} 重复n至m次

禁止贪婪

**题示**:贪婪模式是尽可能匹配多的,禁止贪婪是匹配少的
  • ? 当该字符紧跟在任何一个其他限制符{*,+,{n},{n,},{n,m}}后面时,匹配模式为非贪婪模式
  • U 模式修正符

模式修正符

  • U 禁止贪婪
  • i 不区分大小写
  • x 忽略模式中的空白
  • s 将字符串视为单行,‘.’也能匹配到换行
  • m 将字符串视为多行,‘^,$’匹配行首行尾

模式单元

作用

  • 分组 (www)作为一个原子
  • 限制多选结构 (https)|(https)
  • 捕获

反向引用

  • 定义:对模式单元中捕获文本内容的引用
  • 注意:捕获的文本存储在临时缓冲区中,缓冲区的编号范围是1-99
  • 格式:反向引用的格式为+编号 如\1 ->括号的序号
  • :非捕获元字符‘?:’
举例
$pattern = '/123(\d{2}(?:\d{2}(\d{2})(?:\d{2}\2)))/';
以下4个字符串:
1234455667744
1234455667766
1234455667755
1234455667777
能匹配到的是1234455667766,

原因如下

  • 括号包括住的作为一个原子,4个括号包括的都是连续两个数字,其中第二个和第四个一样,在括号里含有‘?:’,是忽略不编码的意思,第一个和第三个一样,正常编码,所以\1是引用第一个括号的内容,\2是引用第三个括号的内容,第三个括号匹配到的内容为66,故最后两个数字应该为66

中文模式

在utf-8环境下,汉字的编码范围是0x4e00 - 0x9fa5,在ANSI(gb2312)环境下编码范围为0xb0 - 0xf7 , 0xa1-0xfe
在utf-8环境下,需使用U模式修正符使模式字符串被当做UTF-8,在ASNI(gb2312)环境下,需使用chr将ASCII码转换为字符

$pattern = '/\x{4e00}-\x{9fa5}/';
$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']|['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xb0).'-'.chr(0xf7).']/';

PHP函数

  • preg_match 执行匹配正则表达式(匹配一项)
  • preg_match_all 执行一个全局正则表达式匹配(匹配全部)
  • preg_replace 执行一个正则表达式的搜索和替换
  • preg_replace_callback 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_filter 执行一个正则表达式搜索和替换
  • preg_grep 返回匹配模式的数组条目
  • preg_split 通过一个正则表达式分隔字符串
  • preg_quote 转义正则表达式字符
  • 更多信息点击查看

常见验证

// 验证联系电话
$isMob="/^1[34578]{1}\d{9}$/";
$isTel="/^([0-9]{3,4}-)?[0-9]{7,8}$/";

 // 验证邮箱方法
$preg_email='/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-.])+([a-z]{2,5})$/ims';

本章的思维导图下载地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值