网站大量收购闲置独家精品文档,联系QQ:2885784924

PHP程序设计基础(微课版)(第2版)课件 1.PHP正则表达式简介及语法.pptx

PHP程序设计基础(微课版)(第2版)课件 1.PHP正则表达式简介及语法.pptx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

8.1正则表达式简介、语法

演讲人

1正则表达式简介

01

2PHP正则表达式语法

02

目录

01

1正则表达式简介

1正则表达式简介

在某些应用中,有时候需要根据一定的规则来匹配(查找)确认一些字符串,如要求用户输入的QQ号码为数字且至少5位。用于描述这些规则的工具就是正则表达式。

1.1最简单的匹配

最简单的匹配就是直接给定字符匹配。如用字符a去匹配aabab,则会匹配出3个结果,分别是字符串中的第1,2和第4个字符。这种匹配是最简单的情况,但往往实际处理中会复杂得多,如下面的“QQ号码为数字且至少5位”,其对应的正则表达式为:

^\d{5,}$

该正则表达式就描述需要确定的内容为至少5位以上的数字。该表达式是怎么描述这一规则的:

^:表示匹配字符串的开始,也即该字符串是独立的开始而不是包含在某个字符串之内

\d:表示匹配数字

{5,}:表示至少匹配5位及以上

1.1最简单的匹配

$:表示匹配字符串的结束,也即该字符串是独立的结束

现在就很清楚了,该正则表达式综合起来就是匹配5位以上的连续数字,且有独立的开始和结束,对于少于5位的数字,或者不是以数字开始和结尾的如a123456b这样都是无效的。

从该实例可以看出,正则表达式是从左至右描述的。

同样,如果要匹配移动号码的正则表达式为:

^1\d{10}$

提示

由于对正则表达式的匹配结果,在很多情况下都不是那么确定,所以最好下载一些辅助工具用于测试正则表达式的匹配结果。这类工具如MatchTracer、RegExBuilder等,以及其他类似的工具也可。

1.2元字符

在上面的实例中,^、\d及$等这些符号,代表了特定的匹配意义,称之为元字符,常用的元字符如下:

提示

当要匹配这些元字符的时候,需要用到字符转义功能,同样正则表达式里面用\来表示转义,如要匹配.符号,则需要用\.,否则.会被解释成“除换行符外的任意字符”。当然,要匹配\,则需要写成\\

连续的数字或字母可以用–符号连接起来,如匹配所有的小写字母,[1-5]匹配1至5这5个数字

02

2PHP正则表达式语法

2.1重复规则

正则表达式的威力在于其能够在模式中包含选择和循环,正则表达式用一些重复规则来表达循环匹配。

常用的重复如下:

2.2分枝

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

提示

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

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

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

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

//错误写法

2.2分枝

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

下面的错误写法,只能匹配到5位数字及9位数字的前5位数字的情况,而不能匹配9位数字的邮编。

2.3分组

在正则表达式中,可以用小括号将一些规则括起来当作分组,分组可以作为一个元字符来看待。

分组的实例,验证IP地址:

(\d{1,3}\.){3}\d{1,3}

这是一个简单的且不完善的匹配IP地址的正则表达式,因为它除了能匹配正确的IP地址外,还能匹配如322.197.578.888这种不存在的IP地址。

当然,用这个表达式简单匹配成功后可以在利用PHP的算术比较再加以判断IP地址是否正确。而正则表达式中没有提供算术比较功能,如果要完全匹配正确的IP地址,则需要改进如下:

((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

2.3分组

规则说明

该规则关键之处在于确定IP地址每一段范围为0-255,然后再重复4次即可。在:

25[0-5]|2[0-4]\d|[01]?\d\d?

中,用分枝首先确定了250-255和200-249。[01]?\d\d?则确定了0-199的范围,综合起来就是0-255。

2.4贪婪与懒惰

正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容。如a.*b,用他来匹配aabab,它会匹配整个aabab,而不会只匹配到aab为止,这就是贪婪匹配。

与贪婪匹配对应的是,在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。

上述实例对应的懒惰匹配规则为:

a.*?b

如果用该表达式去匹配aabab,那么就会得到aab

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档