本章主要学习正则表达式的基本语法;

正则表达式就是一个匹配的模式,正则表达式本身也就是一个字符串(有一些语法规则,特殊符号组成)

正则表达式这个字符串一定要在对应的函数中使用才有意义(分割,替换函数结合使用)

1、定界符   / /

2、原子    最小的一个匹配单元(放在 / / 中,在正则表达式中,至少有一个。例如:$reg = '/ 7 /' )

3、元字符   元字符是不能单独使用的,用来修饰元子的,用来扩展原子功能和限字的做补充说明(协助定界符中 例如:$reg = '/{5}/' )

4、模式修正符  修正,对模式(正则)修正(写在定界符的外面,写在右边 例如: $reg = '/ {5} / i ' 中的i)

一、界定符号

  界定符就表示一个正则表达式的开始和结束

  例如:/[0-9]/   |  #[0-9]#  | {[0-9]}  常用写法建议使用斜杠;//  $pattern = '/[0-9]/'

二、原子

可见原子:

    1、标点符号; ‘’  _ ? . 等等

    2、英文字母数字 a-z, A-Z, 0-9

    3、汉语,日文,阿拉伯文等其他文字

    4、数理化公司符号

    5、其他可见字符

  不可见原子:

    1、换行符 \n

    2、回车 \r

    3、制表符 \t

    4、空格

    5、其他看不见的符号

  (所有的数字,所有的字,所有的空白,所有的字母,特殊符号 如下)

  .  匹配除换行符之外的任意字符

  \d  (所有的数字) 代表任意一个数字   [ 0-9 ]

  \D (代表所有非数字) 代表任何一个非数字 [ ^0-9 ]  

  \w 代表任意一个字,a-z A-Z, 0-9 _    [ a-zA-Z0-9_]

  \W 代表任意一个非字,a-z A-Z 0-9 _ 之外的所有字符   [ ^ a-zA-Z0-9_ ]

  \s  代表空白    [ \t \n \f \v ]

  \S 代表任意一个非空白  [^ \t \n \f \v ]

  自定义原子表

    [ 13579 ]

    [ a-zA-Z]     说明:- 是从哪到哪

    [ ^a-zA-Z ]  说明: ^ 是除了什么

  说明:( . ) 点, 能代表所有的一个原子

三、元字符

  元字符这个不能在正则表达式中单独使用,用来修饰原子的

  元字符 即原子的筛选方式

  * 用来修饰前面的原子可以出现 0 个 1 个 或者 多个

  + 用来修饰前面的原子出现的次数 1 次 或 多次 (不能没有一次)

  ?用来修饰前面的原子出现的次数 0 次 或 1次

  { m }  用来修饰前面的原子出现 m 次,多一次少一次都不行

  { n, m } 用来修饰前面的原子出现的个数,在 n 到 m 之间,包含 n, m

  { n, } 用来修饰前面的原子可以出现至少 n 次,包含 n

  |  或的关系,表示它两边的原子,只有有一个出现就可以,但是 | 的优先级最低

  ^ 和 \A 表示必须以什么开始,必须写在正则表达式的前面

  $ 和 \Z 表示必须以什么结束,必须写在正则表达式的后面

  \b  单词边界

  \B  非单词边界

 ()第一个作用:改变优先级别

    $str = ' orisaabc';

    $reg = '/ or(is|a)abc/';

   第二个作用:将小原子变成大原子

    $str = 'sqlsalabcsqlddfd';

    $reg = '/(sql)*/';

      第三个作用:子模式,整个表达式是一个大模式,小括号中的是每一个独立的子模式

      第四个作用:反向引用

 ?: 取消子模式,作为大模式用(?:\d{4})

 \1 取子模式

四、模式修正符

  模式修正符要放在定界符之外,放在右边,模式修正符一个字符就是一个功能,可以组合使用;

  例如: “/ go*gle/ i ”;     "/go*gle/ ieu";

  作用:

    模式修正符号可以修正正则表达式的解释,或者扩充正则表达式的功能;

  i    不区分大小写(默认是区分大小写)

  m  修正符号修正正则表达式可以视为多行,在使用 ^ 或 $ 时每一行满足都可以(默认为一行)

  s   用来修正正则表达式中的换行符号,是包含换行符,不用 s 则不包含换行符,默认不包含换行符

  x   忽略修正正则表达式可以省略多个单词之间的空白

  U   (.* , .+) 正则表达式比较贪婪,.*?  和  .+?可以取消贪婪

  贪婪的案例:

$pattern = '/myistest.+123/';
$subject = 'you look myistest__123123123123';
$matche = [];
preg_match($pattern, $subject, $matche);
show($matche);

  贪婪的结果:

Array
(
[0] => myistest__123123123123
)

  取消贪婪的大U:

$pattern = '/myistest.+123/U';
$subject = 'you look myistest__123123123123';
$matche = [];
preg_match($pattern, $subject, $matche);
show($matche);

  取消贪婪的结果:

Array
(
[0] => myistest__123
)

  忽略大小写的案例:i 的用法

$pattern = '/myisTest.+123/Ui';
$subject = 'you look myistest__123123123123';
$matche = [];
preg_match($pattern, $subject, $matche);
show($matche);

  输出结果同上;不加 i 是匹配不到结果的;

  忽略空白符的案例: x 的使用

$pattern = '/m yi s Test.+123/Uix';
$subject = 'you look myistest__123123123123';
$matche = [];
preg_match($pattern, $subject, $matche);
show($matche);

  输出结果同上,不加 x 是匹配不到结果的;

五、实战应用

  1、非空匹配  ‘/.+/’

  2、浮点数匹配(保留2位)‘/(?!0\.00)(\d+\.\d{2}$)/’  

$subject = ['1.00', '2.345', '0.23', '234', '23.22', '0.00'];
$matche = [];
for ($i = 0; $i < count($subject); $i++){
if(preg_match('/(?!0\.00)(\d+\.\d{2}$)/', $subject[$i], $matche)){
show($matche);
}
}

  结果:

Array
(
[0] => 1.00
[1] => 1.00
)
Array
(
[0] => 0.23
[1] => 0.23
)
Array
(
[0] => 23.22
[1] => 23.22
)

  3、手机号码  ‘/^1(3|4|7|8)\d{9}$/’

  4、Email地址 ‘/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i’    或者   ‘/^\w+(\.\w+)*@\w+(\.\w+)+$/’

  5、常见URL地址  '/^(https?://)?(\w\.)+[a-zA-Z]+$/'

  

  

  注:学习笔记

PHP正则表达式基本语法的更多相关文章

  1. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 java 正则表达式 正则表达式语法 java正则表达式语法 java正则表达式 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 ...

  2. 前端学PHP之正则表达式基础语法

    前面的话 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作.在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本 ...

  3. (转)Java正则表达式的语法与示例

    转自:http://www.cnblogs.com/lzq198754/p/5780340.html 概要: Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串 ...

  4. JS 正则表达式基本语法(精粹)

    1.正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束. 例子如下: "^The":表示所有以"The"开始的字符串( ...

  5. js正则表达式基本语法

    正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束. 例子如下: "^The":表示所有以"The"开始的字符串(&q ...

  6. JavaScript正则表达式之语法

    Regular Expressions翻译成中文叫正则表达式.也不知道是谁翻译过来的,听起来就很严肃.似乎翻译成通用表达式更能传达其精髓. 为什么叫通用表达式?因为它有一套和编程语言无关的文本匹配规则 ...

  7. 学习django之正则表达式的语法

    正则表达式 正则表达式的常用语法: 1)单个字符: .          任意的一个字符 a|b        字符a或字符b [afg]      a或者f或者g的一个字符 [0-4]      0 ...

  8. JavaScript学习笔记-正则表达式(语法篇)

    正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过 ...

  9. JavaScript 正则表达式基础语法

    前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...

随机推荐

  1. Linux系列——安装双系统Ubuntu

    作为一个穷人,电脑破得不行却没钱换,怎么办呢,不如换个Ubuntu吧,没有Windows那么多后台应用,在我这台古董上稍微流畅一点. Linux有很多发行版,比较流行和适合入门的就是Ubuntu和De ...

  2. md5sum命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/cbbbc/article/details/48563023 前言 在网络传输.设备之间转存.复制大文件等时,可能会出现传输 ...

  3. 为什么找程序员一定要看他的 GitHub

    听说 最开始听到这句话是某知名互联网公司大牛告诉我的,我很不以为然,不过迫于他是"leader"我也注册了一个 highsea (广告 0.0):当然我可懒得 push 更别提 c ...

  4. PC端上必应词典与金山词霸的测评分析

    1.  介绍 随着英语学习越来越普及,基本上现在每位大学生的电脑上都会有一款便捷的英语查词软件,这次我们团队选择测评的 是微软必应词典(3.5.0.4311)和金山词霸(2014.05.16.044) ...

  5. android学习-1

    所有的android应用都是由屏幕构成的一个集合,每个屏幕则由一个活动和一个布局组成. 活动--用户可以完成的一个确定的事. 布局--对屏幕外观的描述.(布局写为一个XML文件,回告诉android如 ...

  6. web05-CounterServlet

    电影网站:www.aikan66.com 项目网站:www.aikan66.com 游戏网站:www.aikan66.com 图片网站:www.aikan66.com 书籍网站:www.aikan66 ...

  7. Struct2笔记②--完善登陆代码

      上节课的代码 写完整 登陆成功在页面上显示用户名和密码: username:${requestScope.username }<br> password:${requestScope. ...

  8. 第二次作业<1>

    1001.A+B Format (20) ac代码 1. 解题思路 先求和,再输出. 答案区间为-2,000,000至2,000,000,将答案分为三个区段分类讨论.虽然觉得很烦但是想不出更好的方法. ...

  9. UVA - 11021 Tribles 概率dp

    题目链接: http://vjudge.net/problem/UVA-11021 Tribles Time Limit: 3000MS 题意 有k只麻球,每只活一天就会死亡,临死之前可能会出生一些新 ...

  10. 解决vsftp无法上传文件及文件夹的问题

    因为搞hadoop的缘故,考虑到启动linux桌面会给电脑带来比较卡..所以就将图形界面的启动给关闭,完全在命令的模式下使用linux. 使用yum搭建了ftp服务..yum的使用参考:http:// ...