PHP 正则表达式语法(一)

正则表达式简介

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

最简单的匹配

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

^\d{5,}$

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

  1. ^:表示匹配字符串的开始,也即该字符串是独立的开始而不是包含在某个字符串之内
  2. \d:表示匹配数字
  3. {5,}:表示至少匹配5位及以上
  4. $:表示匹配字符串的结束,也即该字符串是独立的结束

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

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

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

^1\d{10}$

提示

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

元字符

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

元字符 说明
. 匹配除换行符意外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
[x] 匹配x字符,如匹配字符串中的 a、b 和 c 字符
\W \w的反义,即匹配任意非字母,数字,下划线和汉字的字符
\S \s的反义,即匹配任意非空白符的字符
\D \d的反义,即匹配任意非数字的字符
\B \b的反义,即不是单词开头或结束的位置
[^x] 匹配除了 x 意外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符

提示

  1. 当我们要匹配这些元字符的时候,我们需要用到字符转义功能,同样正则表达式里面用 \ 来表示转义,如要匹配 . 符号,则需要用 \. ,否则 . 会被解释成“除换行符外的任意字符”。当然,要匹配 \ ,则需要写成 \\
  2. 连续的数字或字母可以用 – 符号连接起来,如 匹配所有的小写字母,[1-5] 匹配 1 至 5 这 5 个数字

本章节内容共分 6 部分:

  1. 1. PHP 正则表达式语法(一)
  2. 2. PHP 正则表达式语法(二)
  3. 3. PHP 正则表达式匹配 preg_match 与 preg_match_all 函数
  4. 4. PHP 正则表达式替换 preg_replace 函数
  5. 5. PHP 正则表达式分割 preg_split 与 split 函数
  6. 6. PHP 常用正则表达式整理

查看评论

#1楼 [2011-10-11 18:10]  仲达

仲达领兵十万直取成都

#2楼 [2011-10-11 18:11]  仲达

尔的文章还不错。。。

#3楼 [2011-12-25 21:02]  alex

很不错的文章,谢谢。

#4楼 [2012-02-23 18:28]  hbeimf

学习了

#5楼 [2012-03-05 20:37]  JBoy1009

很不错 留着做个笔记

#6楼 [2012-03-05 23:19]  jixueqi

这个正好用的上。

#7楼 [2012-03-08 13:52]  pop

mark一下

#8楼 [2012-03-30 16:23]  travishu

不错 认真看了一边    正在学习

#9楼 [2012-03-30 16:25]  尉聊子

有正则表达式软件就好了

#10楼 [2012-05-12 13:50]  xiaoziit

收藏了

发表评论

(必填)

(非必填,点击您的名字可链接至该地址,不用加http://)

(请自觉遵守互联网相关政策法规,严禁发布色情、暴力、反动言论)

5idev.com(我爱开发网) — 提供最好的 XHTML教程DIV+CSS教程PHP教程ThinkPHP教程