`
victorwmh
  • 浏览: 207588 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

PHP正则表达式

    博客分类:
  • php
 
阅读更多

一、概述

正则表达式是进行模式匹配和文本操纵的一种复杂而强大的工具。在PHP中可以方便的利用这些匹配规则检验、替换及过滤字符串。在PHP手册“Perl兼容正则表达式函数”章节,可以了解PCRE的一些基础知识,以及如何使用preg_match(),preg_replace(),preg_split()等函数。

正则表达式通过其简单的语法构造模式,能够匹配几乎任何可以想象出来的字符组合。但正是因为这种简洁,匹配字符组合在一起后也让人头晕。因此,记住一些关键匹配字符的含义就显得尤为重要。只有记住这些才能将一连串的匹配字符拆分成段的理解。

邮箱验证的正则表达式:
<?php
$email = "your.name@domain.name.info";
if (! preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)) {
    echo 'Email is invalid.';
}
?>

定界符/
在PCRE中,斜杠为界定符。

元字符
有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号内被识别的。
方括号外的元字符:反斜线\、音调符^、美元符$、句点.、方括号[]、竖线|、圆括号()、问号?、星号*、加好+、花括号{}。
模式中方括号内的部分称为“字符类”,其内的元字符为:反斜线\、音调符^、中横线-。

二、具体含义:
音调符^和美元符$
音调符:在字符类之外,默认匹配模式下仅在当前匹配点是目标字符串的开头时才为真的断言。在字符类之中,音调符的含义完全不同,为指出字符范围。
美元符:仅在当前匹配点是目标字符串的结尾或者当最后一个字符是换行符时其前面的位置时为TRUE的断言(默认情况下)。如果涉及到几选一时美元符不需要是模式的最后一个字符,但应该是其出现的分支中的最后一个字符。美元符在字符类之中没有特殊含义。

反斜线\
反斜线是有数种用途的通用转义符,常用的有:
1、将某些元字符当普通字符用——如:( ) [ ] . * ? + ^ | $
2、指定通用字符类型:\d 任一十进制数字;\D 任一非十进制数的字符。
其用法还有表示二进制、某些简单的断言等,详细可以参考手册。

四个常用元字符的含义
句点(.): 匹配任意字符。因此,模式.at匹配cat、bat或rat等。
星号(*): 匹配0或多个前面的对象。迄今为止,我们知道的唯一对象就是字符。
加号(+): 和星号的含义类似,但是它指匹配1或多个前面的对象。因此,.+at匹配brat、sprat甚至catestrophe中的cat,但不匹配at。如果要匹配at,必须将+换成*。
问号(?): 前面的对象是可选的。也就是说,它匹配0或1个前面的对象,模式color?既匹配color也匹配colour。模式color?表示,问号前面的r字符出现0或1次。
如果想让元字符直接与自身匹配,需要在元字符前加上反斜杠。

字符类[]
如果想用一组特殊的字符匹配字符,可以通过将这些字符放到方括号中来创建一个字符类。
方括号中可用的元字符有:
\ 通用转义字符
^ 排除字符类,但仅当其为第一个字符时有效。
- 指出字符范围

竖线|
竖线符号也称为管道(pipe),用于分隔多选一的模式。
如:gilbert|sullivan,匹配了"gilbert"或者"sullivan"中的一个。可以有任意多个分支,也可以有空的分支(匹配空字符串)。

子模式()
如果想对多个字符用*或+等,需要把相应的字符序列放在一个圆括号中构成对象。
如:cat(aract|erpillar|)
匹配了"cat","cataract"或"caterpillar"之一,没有圆括号的话将匹配"cataract","erpillar"或空字符串。

重复{}
重复是由数量符指定的,可以接以下任何一项:
1、单个字符,可以是被转义的; 2、.匹配字符; 3、一类字符; 4、一个反向引用; 5、一个括号中的子模式(除非是个断言)


普通的重复数量符指定了所允许的匹配的最小和最大数目,方法是将两个数字放在花括号中,中间用逗号分隔。数字必须小于 65536,并且第一个数字必须小于或等于第二个数字。例如:z{2,4} 匹配了 "zz","zzz" 或 "zzzz"。单个的右花括号不算是特殊字符。如果省略了第二个数字但是有逗号,则表示没有上限。如果同时省略了第二个数字和逗号,则数量符指定了匹配的准确数目。因此 [aeiou]{3,} 匹配至少连续 3 个元音,但是可以匹配更多。\d{8} 则匹配了正好 8 个数字。出现在不允许放置数量符位置或者不符合数量符语法的左花括号,被当成字面上的该字符。例如 {,6} 不是一个数量符,而是字面上的这四个字符。

 

 

 

分享到:
评论

相关推荐

    php正则表达式系统教程php正则表达式系统教程

    php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程

    常用java正则表达式

    许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理...

    php正则表达式手册

    php正则表达式手册,系统的介绍了正则表达式的使用,适合初学者学习

    PHP正则表达式教程

    PHP正则表达式教程,从基本概念、语法规则、到匹配、拆分、替换,末尾还有常用的验证应用举例。最后希望大家都能熟练掌握正则表达式的知识并正确运用。

    php正则表达式全集

    很全的php正则表达式全集,应该对大家会有帮助的

    php正则表达式.txt

    php正则表达式.txt php

    PHP正则表达式基本语法和使用方法

    PHP正则表达式基本语法和使用方法 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 正则表达式(regular expression)是一种表示方式,...

    php正则表达式深入浅出.pdf

    php正则表达式深入浅出.pdf php正则表达式深入浅出.pdf

    正则表达式经典实例

    对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...

    php正则表达式

    PHP和正则表达式 个正则表达式是个特定格式化模式可以用来找出个串在另个串中使用情况几个编程语言包括Visual Basic,Perl,JavaScript和PHP都支持正则表达式希望在这篇入门指导结束Mitchell(作者自己)可以让你在PHP中...

    php正则表达式在线测试工具源码.rar

    php正则表达式在线测试工具源码,用这个工个可以帮助你测试你所写的正则表达式规则是否正确,方便排除语法、写法上的错误,提高你的代码编译效率,把本PHP文件上传到你的网站目录下运行就可以了。  注:该工具主要...

    php 正则表达式简单介绍

    关于php正则表达式的文档。 很不错哦。

    PHP一些常用的正则表达式

    PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的...

    PHP正则表达式快速学习及PHP常用正则表达式大全实用文档.doc

    PHP正则表达式快速学习及PHP常用正则表达式大全实用文档.doc

    PHP 正则表达式匹配汉字、字母、数字、下划线

    PHP 正则表达式匹配汉字、字母、数字、下划线

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    取得正则表达式的全部匹配.php 取得正则表达式的全部匹配 返回与模式匹配的数组单元.php 返回与模式匹配的数组单元 正则表达式的替换.php 正则表达式的替换 正则表达式的拆分.php 正则表达式的拆分 表单验证....

    PHP 正则表达式手册

    PHP 正则表达式手册

    精通正则表达式 中英文

     《精通正则表达式(第3版)》包含了对PHP及其正则表达式的讲解。这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java 1.4.2和Java 1.5/1.6之间的众多差异。  本书的内容: ...

Global site tag (gtag.js) - Google Analytics