一、概述
正则表达式是进行模式匹配和文本操纵的一种复杂而强大的工具。在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正则表达式简介与应用 正则表达式(Regular Expression)是一种强大的文本处理工具,在各种编程语言中都有广泛的应用。在PHP中,正则表达式被用于字符串搜索、替换以及验证等操作,是进行数据处理的重要手段...
总结起来,PHP正则表达式是一种强大的文本处理工具,它可以帮助开发者高效地进行字符串的匹配、替换和分割操作。通过理解元字符、定位符、量词、分组等概念,以及熟悉PHP提供的相关函数,开发者可以充分利用正则...
本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...
#### 四、PHP正则表达式的基本语法 正则表达式由各种字符和元字符组成。元字符用于定义模式的特殊含义,例如`.`表示任意单个字符,`*`表示前面的字符可以重复任意次。 **示例**: - `.*`:匹配任意长度的任何字符...
- **Perl兼容正则表达式(PCRE)**:Perl语言的正则表达式实现,被广泛应用于PHP、Python等多种编程语言中。 - **Java中的正则表达式**:Java提供了java.util.regex包来支持正则表达式的使用。 - **JavaScript中的正则...
在深入探索PHP正则表达式的世界之前,首先要明确正则表达式的作用和意义。正则表达式是一种强大的文本处理工具,用于在字符串中搜索、匹配、查找和替换文本。它的灵活性和强大功能使其成为处理字符串不可或缺的部分...
PHP 正则表达式深入浅出 PHP 正则表达式是一种强大的字符串处理工具,可以帮助开发者快速匹配、提取和操作字符串。下面是 PHP 正则表达式的详细知识点: 1. 什么是正则表达式? 正则表达式(Regular Expression...
PHP正则表达式基本语法和使用方法 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 正则表达式(regular expression)是一种表示方式,...
在“PHP 正则表达式.rar”这个压缩包中,我们很可能会找到关于如何在PHP中使用正则表达式的详细教程。 首先,我们需要了解正则表达式的基本语法。在PHP中,正则表达式通常被包含在两个分隔符之间,例如`/pattern/`...
php正则表达式在线测试工具源码,用这个工个可以帮助你测试你所写的正则表达式规则是否正确,方便排除语法、写法上的错误,提高你的代码编译效率,把本PHP文件上传到你的网站目录下运行就可以了。 注:该工具主要...
这份“PHP正则表达式学习资料”应该包含了一系列关于如何在PHP环境中使用正则表达式的教程、示例和实践练习。 首先,了解PHP中的正则表达式函数是至关重要的。`preg_match()`用于匹配一个模式,如果匹配成功则返回...