xiaoyi's blog
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

xuexuguang

后端新秀
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 学习

  • GitHub技巧

  • 面试

    • 面试问题集锦
    • PHP基础
    • 正则表达式
      • 基础概念
      • 后向引用
      • 贪婪模式
      • 正则示例
    • PHP文件操作
    • PHP会话控制
    • 自定义函数及内置函数
    • MVC对比
    • linux
    • MySQL数据库基础
    • MySQL创建高性能的索引
    • MySQL的SQL优化
    • MySQL的高可扩展和高可用
    • MySQL安全
    • 常见算法
    • 常见数据结构
    • 高并发解决方案
    • 流量优化
    • 浏览器缓存和数据压缩
    • 图片优化
    • 静态化处理
    • 动态语言并发处理
    • 数据库缓存优化
    • 负载均衡
  • 博客搭建

  • 心情杂货

  • 技术文档

  • 实用技巧

  • 友情链接
  • 更多
  • 面试
xuexuguang
2020-12-31

正则表达式

# 基础概念

  1. 正则表达式的作用:分割、查找、匹配、替换
  2. 分隔符:正斜线(/)、hash符号(#)、取反符号(~)
  3. 通用原子:\d、\D、\w、\W、\s、\S
  4. 元字符:* ? $ + {n}, {n,m} [] () [^] | [-]
  5. 模式修正符:i m e s U x A D u

# 后向引用

使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是: 从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。后向引用用于重复搜索前面某个分组匹配的文本。

// 后向引用
$str = "<b>abc</b>";
$pattern = '/<b>(.*)<\/b>/';
// abc
preg_match($pattern,$str,$match);
1
2
3
4
5

# 贪婪模式

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。

// 贪婪模式
$str = "<b>abc</b><b>bcd</b>";
$pattern = '/<b>.*?<\/b>/';
preg_match($pattern,$str,$match);
1
2
3
4

# 正则示例

// 中文匹配
$str = "中国人";
// 匹配utf-8编码的中文
// $pattern  = '/[\x{4e00}-\x{9fa5}]+/u';
$pattern  = '/.*/';

// 匹配GBK312
$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';
preg_match($pattern,$str,$match);

// 匹配139开头的长度为11位的手机号
$mobile = "13951097729";
$pattern = '/^139\d{8}$/';
preg_match($pattern,$mobile,$match);

// 匹配src标签
$str = '<img alt="高清大图" src="./test.img">';
$pattern = '/<img.*?src=(.*?)>/';
preg_match($pattern,$str,$match);
var_dump($match);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

1、写一个匹配邮箱的正则表达式?

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
1

2、写一个经纬度的正则表达式?

编辑
#php面试题
上次更新: 2020/12/31, 06:55:18
PHP基础
PHP文件操作

← PHP基础 PHP文件操作→

最近更新
01
MVC对比
12-31
02
负载均衡
12-31
03
数据库缓存优化
12-31
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式