正则表达式.ppt_第1页
正则表达式.ppt_第2页
正则表达式.ppt_第3页
正则表达式.ppt_第4页
正则表达式.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、正则表达式,一.什么是正则表达式? 正则表达式(regular expression)是强大、便捷、高效的文本处理工具。 正则表达式能够添加、删除、分离、叠加、插入和修整各种类型的文本和数据。 正则表达式常用于验证表单提交的数据,比如验证电话号码,Email地址,身份证号码等是否有效。 掌握了正则表达式的基础,就可以把知识用到其它的语言(比如:perl、javascript)或者支持Posix风格正则表达式的UNIX shell环境中;,正则表达式,例:检查email地址的合法性 1.用字符串查找的方法: function is_email($email) $has_at = strpos($

2、email, ); /检查是否包含 $has_dot = strpos($email, .);/检查是否包含. if($has_at /false,正则表达式,2.使用正则表达式的方法: function is_email($email) return preg_match(“/a-zA-Z_.+a-zA-Z_.+.a-zA-Z+$/, $email); echo is_email(); /true echo is_email(tomphp); /false,正则表达式,二.正则表达式的构成 完整的正则表达式由两种字符构成,特殊字符(例如?*)称为元字符,其它为文字或者是普通文本字符。 例:

3、验证身份证号码:d15(d2A-Za-z0-9)?$“ 验证URL地址:http:/w+.w+.a-zA-Z2,6$ 模式是正则表达式最基本的元素,它们是一组描述字符串特征的字符; 模式可以很简单,由普通的字符串组成, 也可以很复杂,包含很多的特殊字符;,正则表达式,1.行的开始和结束 脱字符表示一行的开始 $美元符表示一行的结束 例: cat匹配以c作为一行的第一个字符,紧接着一个a,紧接着一个t的文本 cat$匹配行的开头,然后是字符c a t,然后是行结尾 $匹配行的开头,然后就是行的结尾(即空行),正则表达式,2.字符组(Character class) 匹配若干字符之一 例: gre

4、ay首先匹配字符g,接下来是r,然后是一个e或者a,最后一个是y Ssmith匹配smith或者Smith 在字符组内部,连字符”- ”表示一个范围,如:1-6与123456是一样的。 a-z匹配一个小写字母 A-Z匹配一个大写字母 a-zA-Z匹配一个英文字母 0-9匹配一个数字 0-9a-zA-Z_!.?匹配一个数字,英文字母,下划线,感叹号,点号,或问号,正则表达式,注意:只有在字符组内,连字符才是元字符,否则它就只能匹配普通的连字符号。其实,即使 在字符组内部,它也不一定就是元字符。如果连字符出现在字符组的开头,它表示的就只是一 个普通字符,而不是一个范围,同样的道理,问号和点号通常被

5、当作元字符处理,但在字符组 中则不是。 排除型字符组 匹配任何未列出的字符,字符组中开头的 “”表示排除,所以这里列出的是不希 望匹配的字符。 例: 1-6匹配除了1到6以外的任何字符 qu匹配q后面的字母不是u,正则表达式,3.用点号匹配任意字符 元字符 “.”用来匹配除了换行符外任意字符 例如: 日期 2010-09-15、2010/09/15、2010.09.15 可以用表达式 2010-./09-./15匹配,也可 以用表达式 2010.09.15 匹配。 不过表达式 2010.09.15 也可以匹配2010 09 15 所以 2010-./09-./15 更加准确 注意:在-./中,

6、点号并不是元字符,因为它们在字符组内部。这里的连字符也不是元字符, 如果连字符不在字符组的开头,例如.-/就是用来表示范围的。,正则表达式,4.多选结构 |是一个非常简捷的元字符,它的意思是或(or)。 如例子 greay 可以写作 grey|gray 或者是 gr(a|e)y 后者用括号来划定多选结构的范围 对表达式 gr(a|e)y 来说,括号是必须的,因为如果没有括号,gra|ey的意思就成了 gra 或 者 ey 例: (First|1st) street匹配 First street或者 1st street 也可写成(Fir|1)st street,正则表达式,5.量词 ?之前的字

7、符可以不出现,也可以只出现一次 *之前的字符可以出现无数次,也可以不出现 +之前的字符至少要出现一次 例如:需要匹配表示7月4日(July fourth)的文本,其中月份可能写作 July 或者 Jul,而日期 可能写作 fourth、4th 或者 4。 可以使用表达式 (July|Jul) (fourth|4th|4) 匹配 , 也可以把 (July|Jul)缩短为 (July?) , 把4th|4 简化为 4(th)? 最后变成July? (fourth|4(th)?),正则表达式,6.区间量词 min, max之前的字符允许出现的次数在min到max之间 0,1等同于? 0,等同于* 1

8、,等同于+,正则表达式,7.括号的作用及反向引用 括号可以限制多选项的范围,可以将若干字符组合为一个单元,受问号或星号之类量词的作用。 括号还有另一个用途,它能够“记住”它们包含的子表达式匹配的文本。然后通过反向引用可 以匹配与表达式先前匹配部分同样的文本。 反向引用是正则表达式的特性之一。 例如:查找出现重复单词的文本 b(a-zA-Z+) +1b匹配 hello the the world! 中的 the the,正则表达式,括号能够”记忆“其中的子表达式匹配的文本,不论这些文本是什么,元字符序列 1 都能记 住它们 在一个表达式中可以使用多个括号,按括号从左到右出现的顺序,再用 1、2、

9、3等来表示 第一,第二,第三组括号匹配的文本。 例如: (a-z)(0-9) 12表达式中的 1 表示a-z匹配的内容,而 2 表示0-9匹配 的内容,正则表达式,8.字符缩略表示,正则表达式,9.元字符总结,正则表达式,正则表达式,三、正则表达式在php中的应用 Php支持两种风格的正则表达式:Perl风格和Posix 风格,分别由两套函数接口实现, preg引擎提供的函数,通常情况下,在速度和功能方面都要强于ereg。 PCRE全称为Perl Compatible Regular Expression,意思是Perl兼容正则表达式。 PCRE来源于Perl语言,而Perl是对字符串操作功能最强大的语言之一,PHP的最初版本就是由Perl开发的产品。 在PCRE中,通常将正则表达式 包含在分隔符两个反斜线“/”之间; 例:preg_match(/a-z0-9/i, $str); 分隔符也不仅仅局限于“/”。除了字母、数字和斜线“”以外的任何字符都可以作为分隔符,像“#”、“/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论