【一】适用场景

邮箱验证,手机号码,验证码,替换敏感词(骂人换成**),文档采集,表情替换技术(早期),模板引擎解析

【二】定界符

定界符就是用来定义边界

注意:定界符不能用a-zA-Z0-9和 \和(),其他都可以用,但必须成对出现,又开始有结束

区分 \ 和 /,\ 为转义字符, / 为正则字符

转义字符:将 / 转为字符串形式,因为例如$str = '/ / /'这种形式的正则无法识别中间的/,所以需要 \ 转义字符,将中间的 / 转义为符号才能使用。

例如需要正则匹配 \ 时:

$str = '/ \/ /';或者$str = "/ '/' /";或者修改定界符$str = "@ / @"

定界符写法举例:

<?php$str = '% %';$str = '^ ^';$str = '$ $';$str = '/ /';$str = '@ @';    $str = '# #';$str = '( )';//错误$str = 'A A';//错误
?>

最常用的为/

【三】元字符

^,\d及$等符号代表了特定的匹配意义,我们称之为元字符,常见元字符有

.       除换行符外任意字符;

\w    a-zA-Z0-9(字母或数字、下划线);-----word字母

\s     空白符\n,\t,\r,空格;-----------------spacing间隙

空白符是指空格符' '、水平制表符'\t'、垂直制表符'\v'、换行符'\n'、回车符'\r'、换页符'\f'之类的字符

\d    0-9数字;---------------------------digit数字

\b    词边界(单词的开始或结束);---------begin开始

^     字符串开始;

$     字符串结束;

[x]   匹配x字符,如匹配字符串里的a,b,c字符;

\W   \w的转义,除了a-zA-Z0-9之外的任意字符;

\S   匹配任何非空白的字符;

\D   0-9以外,匹配任何的字符;

\B   非边界(匹配不是单词开头或结束位置的字符);

[^x] 匹配除了x以外任意字符,如[^abc]匹配除了abc以外任意字符

例如:[^0-9a-zA-Z]中因为有抑扬符,所以变成了匹配0-9a-zA-Z之外的字符

注意:

①当我们要匹配这些元字符的时候,我们需要用到字符转义功能,同样正则表达式里面用 \ 来表示转义,如要匹配 . 符号,则需要用 \. ,否则 . 会被解释成“除换行符外的任意字符”。当然,要匹配 \ ,则需要写成 \\
②连续的数字或字母可以用 – 符号连接起来,如 匹配所有的小写字母,[1-5] 匹配 1 至 5 这 5 个数字

【四】正则表达式中的原子(最小单位)

原子是正则表达式的最小单位,一个成立的正则表达式必须至少包含一个原子

包含:空格,a-zAZ,换行,0-9,中文,标点符号,特殊符号等全为原子

原子等价式:

\d      0-9
\w     a-zA-Z0-9
\s      \t,\n,\v,\r,空格
\D     [^0-9]
\W    [^a-zA-Z0-9]
\S     [^\t\n\f\r]

【五】循环字符

正则表达式用一些重复规则来表达循环匹配

常用的重复如下:

*           重复0次或更多次;

+          重复1次或更多次;

?        重复0次或1次;

{n}       有且只能重复n次;

{n,}      至少重复n次;

{n,m}   可以重复n到m次;

<?phpif (preg_match("/\w?/", "2kkk6k3",$match)) {//匹配0或1次,所以会输出2print_r($match);}else{print_r("匹配失败");}
?>

【六】正则函数

preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数

(1)php匹配正则函数:preg_match()

preg_match() 函数用于进行正则表达式匹配,成功返回 1 true,否则返回 0 false。
preg_match() 匹配成功一次后就会停止匹配,如果要实现全部结果的匹配,则需使用preg_match_all() 函数。

语法:preg_match(正则表达式,匹配变量,存储匹配结果的数组)

<?phpif (preg_match("/IT/i", "hiTony",$match)) {print_r($match);//输出匹配结果}else{print_r("匹配失败");}
?>

(2)preg_match_all()

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE

【七】模式修正符

模式修正符是标记在整个正则表达式之外的,可以看着是对正则表达式的一些补充说明

常用的模式修正符如下:

i          模式中的字符将同时匹配大小写字母

if (preg_match("/ABC/i", "abc",$match)) {print_r($match);}else{print_r("匹配失败");}

m       字符串视为多行

s        将字符串视为单行,换行符作为普通字符
x        将模式中的空白忽略
e        preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
A       强制仅从目标字符串的开头开始匹配
D       模式中的 $ 元字符仅匹配目标字符串的结尾
U       匹配最近的字符串
u       模式字符串被当成 UTF-8

【八】或者(分枝)

分枝是指制定几个规则,如果满足任意一种规则,则都当作匹配成功。具体来说就是用 | 符号把各种规则分开,且条件从左至右匹配。

提示:分枝规定,只要匹配成功,就不再对后面的条件加以匹配,所以如果你想匹配有包含关系的内容,请注意规则的顺序。

下面是一个使用分枝的例子。

美国的邮政编码的规则是 5 个数字或者 5 个数字连上 4 个数字,如 12345 或者 54321-1234 ,如果要匹配所有的邮编,则正确的正则表达式为:

\d{5}-\d{4}|\d{5}

【九】常用正则

邮箱,手机号,网址,自定义格式,采集器

【十】正则练习

(1)必须以start开始,以end结束,中间有一个或更多数字

<?php$pattern = '/^start\d+end$/';$string1 = "start666end";if (preg_match($pattern,$string1,$match)) {print_r($match);}else{print_r("匹配失败");}
?>

(2)必须以end结束

$pattern = '/start\d+end$/';

(3)必须以start开始

$pattern = '/^start\d+end/';

(4)匹配非数字,即字母。以字母开始以字母结束(只能匹配一个)

$pattern = '/^[^0-9]$/';
$string1 = "a";
//匹配成功

(5)匹配非数字,即字母。以字母开始以字母结束(能匹配多个)

$pattern = '/^[^0-9]+$/';
$string1 = "abc";
//匹配成功

转载于:https://www.cnblogs.com/jianxian/p/8584750.html

(独孤九剑)--正则表达式相关推荐

  1. 独孤九剑与乾坤大挪移—uikiller插件系统

    上篇<雷神之锤>介绍了uikiller的基本用法,有人说长按功能可以取名为蓄力攻击.重击,我觉得还真是可以的,但就是感觉招数名字不够大气.在这里还要给大家道个歉,上篇中我说了这一样句话: ...

  2. 通过正则表达式校验手机号码,拿走即用!

    校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...

  3. Linux shell 学习笔记(15)— shell 正则表达式

    1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...

  4. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册

    前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...

  5. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. 正则语法完全正则表达式手册_语法格式重点

    20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...

  8. 正则表达式 - 语法

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 例如: r ...

  9. 正则表达式中的\.表示什么意思

    \ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.

最新文章

  1. DC-RC加固修补型砂浆
  2. Modbus设备调试工具Winform(包括SRC0001、海康威视、TTS以及各种类型LED的测试)...
  3. 好久没写了,重装了系统重新配置的Live Writer,看看效果:
  4. 编程方法学25:设计实用社交网络
  5. 网站开发中JS中的常用语句
  6. 【JSP笔记】第三章 JSP内置对象【上】
  7. [转]URLRewriter使用通配符
  8. android 获取webView高度,设置webView高度
  9. C语言case字句有什么作用,switch case 语句的使用规则
  10. Logback 整合 RabbitMQ 实现统一日志输出
  11. 你应该了解的python 垃圾回收机制
  12. 10.FreeRTOS学习笔记-中断管理
  13. 【Flink】Flink StreamingFileSink
  14. 关于node的聊天室错误
  15. JVM性能调优监控工具详解
  16. android 摄像头检测工具,检摄app2.0.2最新版(摄像头检测)
  17. flowable工作流所有业务概念
  18. pdf转cad怎么弄_CAD转PDF怎么弄?在线老师傅教你一招
  19. 威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理
  20. 运用Excel实现描述性统计分析

热门文章

  1. webpack开发Vue配置 1
  2. 循环赛日程表(分治法)
  3. PPT 填充透明度,设计窗格在哪?
  4. 考研证件照要求?如何制作考研用的证件照?
  5. 帝国梦醒,是时候收兵了!我命令:全体撤退
  6. 计算机在电影中的应用,谈计算机动画在电影特效中的应用
  7. 背景音乐Unbreak My Heart的歌词及翻译
  8. Linux环境下的C/C+基础调试技术2——程序控制
  9. Failing To See the Big Picture - Mistakes we make when learning programming
  10. js实现弹出框时禁止页面滚动,关闭弹出框时恢复页面滚动