background image

在 PHP 中使用与 Perl 兼容的正则表达式

前言
  PHP 被大量的应用于 Web 的后台 CGI 开发,通常是在用户数据数据之后得出某种结
果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是"2 月 30 日"!

 

那应该怎么样来检验暑假是否正确呢? 在 PHP 中加入了正则表达式的支持,让我们可以
十分方便的进行数据匹配。
什么是正则表达式
  简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基
于 UNIX/LINUX 系统的软件工具中找到正则表达式的痕迹,例如:Perl 或 PHP 脚本语言。
此外,JavaScript 这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式
已经成为了一个通用的概念和工具,被各类技术人员所广泛使用。
  在某个 Linux

网站上面有这样的话: 如果你问一下 Linux 爱好者最喜欢什么,他可

能会回答正则表达式;如果你问他最害怕什么,除了繁琐的安装配置外他肯定会说正则

表达式。
  正如上面说的,正则表达式看起来非常复杂,让人害怕,大多数的 PHP 初学者都会
跳过这里,继续下面的学习,但是 PHP 中的正则表达式有着可以利用模式匹配找到符合
条件的字符串、判断字符串是否合乎条件或者用指定的字符串来替代符合条件的字符串等

……

强大的功能,不学实在太可惜了
正则表达式的基本语法
  一个正则表达式,分为三个部分:分隔符,表达式和修饰符。
  分隔符可以是除了特殊字符以外的任何字符(比如"/ !"等等),常用的分隔符是"/"。
表达式由一些特殊字符(特殊字符详见下面)和非特殊的字符串组成,比如"[a-z0-9_-]
+@[a-z0-9_-.]+"可以匹配一个简单的电子邮件字符串。修饰符是用来开启或者关闭某种功
能/模式。下面就是一个完整的正则表达式的例子:
/hello.+?hello/is
上面的正则表达式"/"就是分隔符,两个"/"之间的就是表达式,第二个"/"后面的字符
串"is"就是修饰符。
  在表达式中如果含有分隔符,那么就需要使用转义符号"",比如"/hello.+?/hello/is"。
转义符号除了用于分隔符外还可以执行特殊字符,全部由字母构成的特殊字符都需
要""来转义,比如"d"代表全体数字。
正则表达式的特殊字符
  正则表达式中的特殊字符分为元字符、定位字符等等。
  元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前
面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或
者相同的元字符组合起来可以构成大的元字符。
元字符:
  大括号:大括号用来精确指定匹配元字符出现的次数,例如 "/pre{1,5}/"表示匹配的
对象可以是"pre"、"pree"、"preeeee"这样在"pr"后面出现 1 个到 5 个"e"的字符串。或
者"/pre{,5}/"代表 pre 出现 0 此到 5 次之间。
  加号:"+"字符用来匹配元字符前的字符出现一次或者多次。例如"/ac+/"表示被匹配的
对象可以是"act"、"account"、"acccc"等在"a"后面出现一个或者多个"c"的字符串。"+"相当
于"{1,}"。
  星号:"*"字符用来匹配元字符前的字符出现零次或者多次。例如"/ac*/"表示被匹配的