PHP 正则表达式

PHP 正则表达式

正则表达式通常被称为 正则 。它们仅仅是一种模式或一系列字符,用来描述特殊的文本搜索模式。

正则表达式允许您在另一个字符串中搜索特定字符串。甚至还可以用另一个字符串替换一个字符串,并将一个字符串拆分成多个块。它们使用算术运算符(+,-,^)来创建复杂的表达式。

默认情况下,正则表达式是 区分大小写 的。

正则表达式的优势和用途

正则表达式在当前应用程序编程中几乎无处不在。下面是一些正则表达式的优势和用途:

  1. 正则表达式帮助程序员验证文本字符串。
  2. 它提供了一个强大的工具,用于分析和搜索模式以及修改文本字符串。
  3. 通过使用正则表达式函数,可以提供简单而易用的解决方案来识别模式。
  • 正则表达式对于创建识别标签的HTML模板系统非常有用。
  • 正则表达式广泛用于浏览器检测、表单验证、垃圾邮件过滤和密码强度检查。
  • 在用户输入验证测试中,如电子邮件地址、手机号码和IP地址,正则表达式非常有帮助。
  • 根据搜索结果或输入,在文件中突出显示特殊关键字。
  • 元字符允许我们创建更复杂的模式。

通过应用正则表达式的一些基本规则,可以创建复杂的搜索模式。正则表达式还使用许多算术运算符(+、-、^)来创建复杂的模式。

正则表达式中的运算符

运算符 描述
^ 它表示字符串的开头。
$ 它表示字符串的结尾。
. 它表示任意单个字符。
() 它表示一组表达式。
[] 它找到一定范围内的字符, 例如[abc]表示a、b或c
[^] 它找到不在范围内的字符, 例如[^xyz]表示不是x、y或z。
- 它找到两个元素之间的范围, 例如[a-z]表示从a到z。
| 这是一个逻辑”或”运算符,用于元素之间。 例如a|b,表示要么是a,要么是b。
? 它表示前置字符或元素的零个或一个。
* 它表示前置字符或元素的零个或多个。
+ 它表示前置字符或元素的一个或多个。
{n} 它表示前置字符的至少n次。例如 – n{3}
{n, } 它表示至少n次,但不超过m次。例如,n{2,5}表示2到5个n。
{n, m} 它表示至少n次,但不超过m次。例如 – n{3,6}表示 n出现3到6次。
\ 它表示转义字符。

正则表达式中的特殊字符类别

特殊字符 描述
\n 表示换行符。
\r 表示回车。
\t 表示制表符。
\v 表示垂直制表符。
\f 表示换页符。
\xxx 它代表一个八进制字符。
\xxh 它表示十六进制字符hh。

PHP提供了两组正则表达式函数:

  1. POSIX正则表达式
  2. PERL风格的正则表达式

POSIX正则表达式

POSIX正则表达式的结构类似于典型的算术表达式:几个操作符/元素被组合在一起形成更复杂的表达式。

最简单的正则表达式是匹配字符串中的单个字符。 例如 – “g” 在toggle或cage字符串中。让我们介绍一些在POSIX正则表达式中使用的概念:

方括号

方括号 [] 在正则表达式中有特殊意义。它们用于找出其中的字符范围。

表达式 描述
[0-9] 匹配任何十进制数字 0 到 9。
[a-z] 匹配任何小写字母 a 到 z。
[A-Z] 匹配任何大写字母 A 到 Z。
[a-Z] 匹配任何从小写字母 a 到大写字母 Z 的字符。

上述范围是常用的。根据需要,您可以使用范围值,例如 [0-6] 以匹配任何从 0 到 6 的十进制数字。

量词符

特殊字符可以表示括号字符序列和单个字符的位置。每个特殊字符都有特定的含义。给定的符号+,*,?, $,和{int range}标记都遵循字符序列。

表达式 描述
p+ 它匹配包含至少一个p的任何字符串。
p* 它匹配包含一个或多个p的任何字符串。
p? 它匹配具有零个或一个p的任何字符串。
p{N} 它匹配具有N个p的序列的任何字符串。
p{2,3} 它匹配包含两个或三个p的字符串。
p{2, } 它匹配至少包含两个p的字符串。
p$ 它匹配以p结尾的字符串。
^p 它匹配以p开头的字符串。

PHP正则表达式 POSIX函数

PHP提供了七个函数,使用POSIX风格的正则表达式在字符串中搜索 –

函数 描述
ereg() 它在一个字符串中搜索一个匹配模式,并且如果模式匹配则返回true,否则返回false。
ereg_replace() 它在字符串中搜索字符串模式,并将匹配的文本替换为替换字符串。
eregi() 它在字符串中搜索模式,并返回匹配字符串的长度,如果找到则返回false。它是一个 大小写不敏感 的函数。
eregi_replace() 此函数与 ereg_replace() 函数相同。唯一的区别是,此函数的模式搜索是大小写不敏感的。
split() split()函数将字符串分割成数组。
spliti() 它与split()函数类似,同样可以通过正则表达式将字符串分割成数组。
Sql_regcase() 它创建一个用于不区分大小写的匹配的正则表达式,并返回一个可以匹配字符串的有效正则表达式。

注意:上述函数在PHP 5.3.0中已被弃用,在PHP 7.0.0中已被移除。

PERL风格的正则表达式

Perl风格的正则表达式与POSIX非常相似。可以互换使用Perl风格的正则表达式函数。在PERL风格的正则表达式中,也可以使用在POSIX部分引入的量词。

元字符

元字符是一个以斜杠跟在字母后面的字符,给该组合赋予了特殊的含义。

例如 - “\d” 元字符可以用来搜索大金额:/([\d]+)000/。这里\d将搜索由数字字符组成的字符串。

下面是可以在PERL样式的正则表达式中使用的元字符列表 –

字符 描述
. 匹配一个字符
\s 匹配空白字符,如空格、换行、制表符。
\S 非空白字符
\d 匹配0到9之间的任何数字。
\D 匹配非数字字符。
\w 匹配单词字符,如小写字母a-z,大写字母A-Z,数字0-9和下划线。
\W 匹配非单词字符。
[aeiou] 匹配给定集合中的任何单个字符。
[^aeiou] 匹配除给定集合之外的任何单个字符。

修饰符

有几个可用的修饰符,可以使使用正则表达式的工作变得更容易。例如 – 区分大小写或在多行中搜索等。

以下是PERL样式正则表达式中使用的修饰符列表 –

字符 描述
i 使搜索不区分大小写
m 指定如果字符串包含回车符或换行符,则$和^运算符将与换行边界匹配,而不是字符串边界
o 仅对表达式进行一次评估
s 它允许使用 .(点)匹配换行符。
x 这个修饰符允许我们在表达式中使用空白字符以增加清晰度。
g 它全局搜索所有匹配。
cg 即使全局匹配失败,它也允许搜索继续进行。

PHP正则表达式POSIX函数

PHP目前提供了七个函数来使用POSIX风格的正则表达式搜索字符串 –

函数 描述
preg_match() 这个函数在字符串中搜索模式并返回< strong> true **,如果模式存在返回< strong> false **。
preg_match_all() 这个函数匹配字符串中的所有出现的模式。
preg_replace() preg_replace()函数类似于ereg_replace()函数,只是正则表达式可以用于搜索和替换。
preg_split() 这个函数与split()函数完全相同,只是接受正则表达式作为模式输入参数。主要通过正则表达式将字符串分割。
preg_grep() preg_grep()函数在输入数组中查找所有符合正则表达式(关系表达式)模式的数组元素。
preg_quote() 引用正则表达式字符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程