PHP 面试考点之正则表达式详解
在 PHP 面试中,正则表达式是一个重要的考点。它可以用于字符串的匹配、提取、替换等操作,在实际开发中有着广泛的应用。
一、正则表达式基础语法
1. 字符匹配
普通字符:直接匹配对应的字符,如
a匹配字符串中的a。元字符:

.:匹配除换行符之外的任意一个字符。\d:匹配一个数字字符,等价于[0-9]。\w:匹配一个字母、数字或下划线,等价于[a-zA-Z0-9_]。\s:匹配一个空白字符(包括空格、制表符、换行符等)。
2. 重复匹配
*:匹配前面的子表达式零次或多次。+:匹配前面的子表达式一次或多次。?:匹配前面的子表达式零次或一次。{n}:匹配前面的子表达式恰好n次。{n,}:匹配前面的子表达式至少n次。{n,m}:匹配前面的子表达式至少n次,最多m次。
3. 边界匹配
^:匹配字符串的开始位置。$:匹配字符串的结束位置。
二、PHP 中常用的正则函数
1. preg_match()
用于执行一个正则表达式匹配。
<?php
$pattern = '/\d+/'; // 匹配一个或多个数字
$subject = 'abc123def';
if (preg_match($pattern, $subject, $matches)) {
echo "匹配到的内容:". $matches[0]; // 输出:123
}
?>2. preg_match_all()
执行全局正则表达式匹配,返回所有匹配结果。
<?php $pattern = '/\d+/'; $subject = 'abc123def456ghi'; preg_match_all($pattern, $subject, $matches); print_r($matches[0]); // 输出:Array ( [0] => 123 [1] => 456 ) ?>
3. preg_replace()
执行正则表达式的搜索和替换。
<?php $pattern = '/\d+/'; $replacement = 'X'; $subject = 'abc123def456ghi'; echo preg_replace($pattern, $replacement, $subject); // 输出:abcXdefXghi ?>
三、面试常见问题及示例
1. 验证邮箱格式
<?php
$email = 'example@example.com';
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
if (preg_match($pattern, $email)) {
echo "邮箱格式正确";
} else {
echo "邮箱格式错误";
}
?>2. 提取字符串中的数字
<?php $str = 'price: 19.99, quantity: 5'; $pattern = '/\d+\.?\d*/'; // 匹配整数或小数 preg_match_all($pattern, $str, $matches); print_r($matches[0]); // 输出:Array ( [0] => 19.99 [1] => 5 ) ?>
四、总结
在 PHP 面试中,正则表达式的考点主要包括基础语法的掌握、常用函数的运用以及实际问题的解决。要熟练掌握字符匹配、重复匹配、边界匹配等语法规则,灵活运用 preg_match()、preg_match_all()、preg_replace() 等函数。对于常见的验证(如邮箱、手机号等)和字符串处理(如提取特定内容、替换等)问题,能够快速写出正确的正则表达式。平时多练习不同场景下的正则应用,加深理解和记忆,这样在面试中才能游刃有余地应对正则相关的问题。

