一、正则表达式基础内容

注:

1、通用原子:

  • \d : 数字。  \D : 除了数字。
  • \w : 数字,字母,下划线。\W : 除了数字,字母,下划线。
  • \s  : 空白符 。 \S : 除了空白符  。

2、元字符:

  • . :除了换行以外的所有字符
  • * : 匹配前面的内容出现 0 次及以上。
  • ? : 匹配前面的内容出现 0 次或 1 次
  • + : 出现一次或多次。
  • ^ : 必须以它开头。
  • $ : 必须以它结尾。
  • {n} : 恰巧出现 n 次。
  • {n,} : 大于等于 n 次。
  • {n,m} : 大于等于 n, 小于等于 m.
  • [] : 是一个集合,匹配中括号中的任意一个字符,如:[abc]即为匹配a或b或者c。
  • () : 后项引用 或者是当做一个整体。
  • [^]: 取反。
  • | : 或者
  • [-] : 代表一个范围,如[0-9],匹配即为 0123456789

3、模式修正符

  • i:不区分大小写
  • m:将字符串通过分隔符进行分割,将字符串中的每一行分别进行匹配。
  • e: 将匹配出来的内容做一些php语法上的处理。
  • s: 修正 "." 的换行。
  • U: 取消贪婪模式
  • x: 忽略模式中的空白符。
  • A: 必须以这个模式开头。
  • D: 修正 "$" 对 "\n" 的忽略。
  • u: 做 utf-8 中文匹配的时候使用。
  • g:该表达式可以进行全局匹配。

示例:

现在需要正则验证一个input框,我想输入的是非整数就自动变成空值。

正则如下;

# 不加入/g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。
#/[^0-9]/g,这个正则表达式的意思是全局匹配非数字类型和非-的字符。 /[^0-9|-]/g

匹配到该正则后,就将input的值置空即可。

二、后项引用

如果想只去除掉b标签,只保留里面的字符串,这里就需要用到后项引用。怎么样后项引用呢,就是将 .* 括起来,然后在匹配的时候,写上 \1 ,\1 代表第一个括号里面匹配到的内容,当然为了防止 \ 将 1 转义掉,所以我们使用 \\1 .

三、贪婪模式

我们这是想匹配到每一个 b 标签,即<b>abc</b><b>bcd</b>,

//如果使用下面的正则来匹配的话,会匹配出<b>abc</b><b>bcd</b>.
$pattern = '/<b>.*<\/b>/';

所以此处我们要使用 .*?来取消贪婪,?代表匹配前面的内容 0 次或者 1次。

//正则表达式改为
$pattern = '/<b>.*?</b>/';
//当然取消贪婪还有一种写法:就是在后面加上一个 U ,即:
$pattern = '/<b>.*</b>/U';

但是切记不能 .*? 和 U 一起用

四、延伸重点

1、常见PCRE函数

2、中文匹配

示例:

$str = '中文';

a、使用utf-8匹配中文:

$pattern = '/[\x{4e00}-\x{9fa5}]+/u';

b、使用GB2312匹配中文:

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

3、写正则表达式的思路

4、示例:

本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/p/11100233.html

最新文章

  1. Java怎么添加背景图片
  2. XPath 实例
  3. Winform开发主界面菜单的动态树形列表展示
  4. iOS阶段学习第18天笔记(Plist-Archiver-归档与解归档操作)
  5. CODE VS1008选数
  6. caffe中的filler.hpp源码的作用:
  7. Android EditText边框颜色的selector 使用focus标记当前填写的框
  8. SQL给字段加上统一的某个字符
  9. Linux学习--alias命令
  10. BZOJ 2431: [HAOI2009]逆序对数列( dp )
  11. 创建内向交货单 BBP_INB_DELIVERY_CREATE
  12. word2010中,插入-符号-公式显示是灰色的解决办法
  13. jmeter读取文件进行参数化时随机取值实现
  14. ubuntu环境下lnmp环境搭建(2)之Nginx
  15. Linux创建普通用户以及权限的分配
  16. Android ROM开发(二)——ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法
  17. flutter- 圆角
  18. matlab 将数字矩阵转换成图像
  19. JS中的一元操作符
  20. 从CAP理论中分析Eureka与zookeeper的区别

热门文章

  1. 目录:Matrix Differential Calculus with Applications in Statistics and Econometrics,3rd_[Magnus2019]
  2. js中 base64 转二进制
  3. Linux下svn服务器的安装与配置-备份-恢复-计划任务
  4. 1.K近邻算法
  5. Apache官方强心剂:开源不受出口管理条例约束!
  6. c++ 类的继承和多态例子
  7. Lubuntu 16.04 64位兼容32位程序
  8. poj2279 Mr. Young&#39;s Picture Permutations[勾长公式 or 线性DP]
  9. 基于django中settings中间件源码思想,实现功能的插拔式设计
  10. HTML DOM 事件与方法