您的位置:首页 > 编程语言 > PHP开发

PHP学习历程之——正则表达式

2014-04-08 13:27 211 查看
首先搞清楚3个问题:

为什么要用正则表达式?

什么是正则表达式?

如何使用正则表达式?

正则表达式的适用场合:

正则表达式最初起源数学领域的一些研究,1956年数学家Stephen Kleene在论文《神经网络事件的表示法》中首次提出了正则表达式的概念。数年之后,计算机领域借鉴那些研究工作的成果和思路,由UNIX的主要创始人Ken Thompson开始讲正则表达式应用于计算搜素算法,至此正则表达式从UNIX领域开始被广泛地普及开来。

替换文本或者代码中的某些字符,最常见的方法就是使用编辑软件中的查找和替换功能,但是替换工作很大的时候,这样的做法就不足以高效的完成要求。这时候就需要借助编程来实现,这时候就使用正则表达式来完成几乎所有的文本查找和替换工作。

正则表达式的强大功能来源于它可以指定抽象模式校验不同的字符序列,3种基本抽象模式:

可出现的字符集(例如,字母、数字和下划线)

可选择性的集合(例如,”com“、”net“或”org“)

可重复的序列(例如,至少一个但是不多于8个的字母符号)

将这三种模式按照一定的方式组合就可以校验电子邮件的地址是否合法;校验用户输入的日期格式是否正确;校验用户输入的身份证号码格式是否正确等(当然可以用php自定义算法实现)。

正则表达式的概念

正则表达式是由一些普通的字符和一些元字符(metacharacters)共同组成的,其中普通字符包括大小写的字母和数字,而元字符具有特殊含义。

元字符
元字符是用来描述前面的字符在匹配模式中出现的方式。元字符本身是单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。下表中消息介绍了正则表达式中各元字符的含义:





方括号表达式

方括号表达式可以用来定义一个字符集和,其含义是必须匹配该集合中的任意一个字符。定义方括号表达式的方式有两种:

把所有的字符列举出来。例如,[1234567890]、[abcdefg]

利用字符“-”来表示字符区间。例如,[0-9]、[a-g]

注意:通常情况下,“-”字符只表示一个字符,只有在表示字符区间的时候才被用作元字符。





定位符
前面提到的方括号表达式只能用来匹配一个字符,若需要匹配一个字符串,比如“Y8”等,这里需要使用定位符“^”与“$”。

正则表达式“^[^A-Z][0-9]$”可用来校验由两个字符组成的字符串,该字符串要同时满足以大写字母开始、以数字结尾的条件。

量词
量词又被称为限定符,量词用来指定字符必须要出现的次数,也就是在制定一个重复模式时要使用量词。

量词具体包括*、+、?、{n}、{n,}、{n,m}共6种,具体使用方法如下表:





正则表达式“happy{1,2}”可以用来校验字符串“happy”和字符串“happyhappy”。

量词“?”如果出现在方括号表达式的里面的时候,只代表一个普通字符。例如:方括号表达式“[-0-9?]”可以用来校验任何一个数字或者一个普通字符“?”,或者一个普通字符“-”。

选择符
在正则表达式中,“|”可以表示选择分支。例如,正则表达式“aaa|bbb|ccc”可以用来校验字符串“aaa”、字符串“bbb”、或者字符串“ccc”。

使用选择符与其他元字符结合可以完成复杂的正则表达式,例如,正则表达式“^[0-9]|^[a-z]”可以用来校验以数字字符开头或者以小写字符开头的字符串。

未完待续…

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: