PHP正则表达式的用法(附带实例)
在实际开发中,经常需要对表单中的文本框进行格式限制。例如,手机号、身份证号、邮箱的验证,这些内容遵循的规则繁多而又复杂,如果要成功匹配,可能需要上百行代码,这种做法显然不可取。
为了简化这个过程,可以使用正则表达式,正则表达式提供了一种简短的描述语法完成诸如查找、匹配、替换等功能。本节将对正则表达式进行详细讲解。
一个完整的正则表达式由 4 部分内容组成,分别为定界符、元字符、文本字符和模式修饰符:
在编写正则表达式时,元字符和文本字符在定界符内,模式修饰符一般标记在结尾定界符之外。
下面演示两个简单的正则表达式,示例代码如下:
常用的正则表达式函数如下表所示:
为了方便读者理解,下面演示 preg_ match() 函数的使用方法,示例代码如下:
由于被搜索的字符串中包含“web”,因此函数的返回值为 1。
为了简化这个过程,可以使用正则表达式,正则表达式提供了一种简短的描述语法完成诸如查找、匹配、替换等功能。本节将对正则表达式进行详细讲解。
正则表达式概述
正则表达式(Regular Expression,RegExp)提供了一种描述字符串结构的语法规则,基于该语法规则可以编写特定的格式化模式,用于验证字符串是否匹配这个模式,进而实现文本查找、替换、截取内容等操作。一个完整的正则表达式由 4 部分内容组成,分别为定界符、元字符、文本字符和模式修饰符:
- 定界符用在正则表达式的两端,标识模式的开始和结束,常用的定界符是“/”;
- 元字符是具有特殊含义的字符,如“^”、“.”、“*”等;
- 文本字符就是普通的文本,如字母和数字等;
- 模式修饰符用于指定正则表达式以何种方式进行匹配,如 i 表示忽略大小写,x 表示忽略空白字符等。
在编写正则表达式时,元字符和文本字符在定界符内,模式修饰符一般标记在结尾定界符之外。
下面演示两个简单的正则表达式,示例代码如下:
/.*it/ /.*it/i在上述示例中,正则表达式的开头和结尾的“/”是定界符;“.*”是元字符,表示匹配任意字符;“it”是文本字符。正则表达式“/.*it/”表示匹配任意含有“it”的字符串,如“it”、“itcast”等。“/.*it/i”中的最后一个字符“i”是模式修饰符,当添加模式修饰符“i”时,表示匹配的内容忽略大小写,如所有含“IT”、“It”、“iT”、“it”的字符串都可以匹配。
正则表达式函数
在 PHP 的开发中,经常需要根据正则表达式完成对指定字符串的搜索和匹配。此时,可使用 PHP 提供的正则表达式函数。常用的正则表达式函数如下表所示:
函数 | 描述 |
---|---|
preg_match(string $pattern, string $subject) | 第 1 个参数是正则表达式,第 2 个参数是被搜索的字符串,匹配成功后停止查找 |
preg_match_all(string $pattern, string $subject) | 和 preg_match() 功能相同,区别在于该函数会一直匹配到最后才停止 |
preg_grep(string $pattern, array $array, int $flags = 0) | 匹配数组中的元素 |
preg_replace(string|array $pattern, string|array $replacement, string|array $subject) | 替换指定内容 |
preg_split(string $pattern, string $subject) | 根据正则表达式分割字符串 |
为了方便读者理解,下面演示 preg_ match() 函数的使用方法,示例代码如下:
$result = preg_match('/web/', 'phpwebphpweb'); var_dump($result); // 输出结果:int(1)在上述示例代码中,“/web/”中的“/”是正则表达式的定界符。当函数匹配成功时返回 1,匹配失败时返回 0,如果发生错误则返回 false。
由于被搜索的字符串中包含“web”,因此函数的返回值为 1。