- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
正则表达式
一.正则表达式(regularexpression)的概念:正则表达式就是一套专门用于处理文本的强大工具;可以对进行文本查找,匹配,替换;正则表达式常用于验证表单提交的内容,比如验证电话号码,Email地址,身份证号码等是否有效;掌握了正则表达式的基础,就可以把知识用到其它的语言(比如:perl,javascript)或者支持Posix风格的正则表达式的UNIXshell环境中;
php支持两种风格的正则表达式:Perl风格PCRE全称为PerlCompatibleRegularExpression,意思是Perl兼容正则表达式。PCRE来源于Perl语言,而Perl是对字符串操作功能最强大的语言之一,PHP的最初版本就是由Perl开发的产品。在PCRE中,通常将正则表达式包含在两个反斜线/之间;例:/apple/定界符也不仅仅局限于/。除了字母、数字和斜线\以外的任何字符都可以作为定界符,像#、/、!等都可以的。Posix风格一般而言,实现相同的功能Perl风格的,效率高些,我们一般使用Perl风格的函数!
例:检查email地址的合法性1.用字符串查找的方法:functionis_email($email){$has_at=strpos($email,@);??//检查是否包含@$has_dot=strpos($email,.);???//检查是否包含.if($has_at$has_dot){ returntrue;}else{ returnfalse}}echois_email();?????//trueechois_email(tom@php);??????????//false
2.使用正则表达式的方法: functionis_email($email){ returnpreg_match(/^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$/,$email); } echois_email(); //true echois_email(tom@php); //false
二、Perl兼容正则表达式函数1.preg_match() 进行正则表达式匹配2.preg_match_all() 进行正则表达式全局匹配3.preg_replace() 执行正则表达式的搜索和替换4、preg_split() 用正则表达式分割字符串5、preg_grep() 返回与模式匹配的数组单元
三、POSIX扩展正则表达式函数1.ereg()搜索跟正则表达式pattern匹配的一个字符串。区分大小写。搜索到返回true,否则返回false2.eregi()eregi()函数功能与ereg()相同,只是不区分大小写;3.ereg_replace()搜索跟正则表达式pattern匹配的一个字符串,并用新的字符串代替所有这个表达式出现的地方4.eregi_replace()eregi_replace()函数功能与ereg_replace相同,只是不区分大小写;
四.正则表达式的构成1.模式模式是正则表达式最基本的元素,它们是一组描述字符串特征的字符;模式可以很简单,由普通的字符串组成,也可以很复杂,包含很多的特殊字符;例:验证身份证号码:/^[1-9][0-9]{14}([0-9]{2}[0-9xX])?$/验证手机号码:/^(13[0-9]|15[0-356]|18[025-9])\d{8}$/验证URL地址:^(http|ftp|https)://(www\.)?[a-zA-Z0-9\-]+\.(com|net|org|cn)$
2.元字符(特殊字符)* 匹配前面的字符零次或多次 等同于{0,}+ 匹配前面的字符一次或多次 等同于{1,}? 匹配前面的字符零次或一次 等同于{0,1}| 匹配两个或多个选择^ 匹配字符串的开始位置$ 匹配字符串结束位置\b 匹配单词的边界(如空格、横杠,但不包括下划线)\B 匹配除单词边界以外的部分[] 匹配方括号中的任一字符[^] 匹配除方括号中的字符外的任何字符{m} m是一个非负整数。匹配确定的m次{m,} m是一个非负整数。至少匹配m次{m,n} 最少匹配m次且最多匹配n次() 表示一个整体. 匹配除换行之外的任何一个字符
3.预定义元字符由于某些模式会反复用到,所以可以使用以下预定义类;\d 匹配一个数字;等价于[0-9]\D 匹配除数字以外任何一个字符;等价于[^0-9]\w 匹配一个英文字母、数字或下划线;等价于[0
文档评论(0)