preg_match()匹配字符串里的数字
使用 preg_match() 配合正则表达式 /\d+/ 可以匹配字符串中的连续数字。该函数返回匹配次数,若需获取具体数字内容,应使用 preg_match_all() 将结果存入数组。默认情况下,\d 仅匹配 ascii 数字 0-9,若需支持 unicode 数字(如中文数字),需添加 u 修饰符。

$str = "订单号: 12345, 金额: 67.89"; $pattern = "/\d+/"; preg_match_all($pattern, $str, $matches); print_r($matches[0]); // 输出: Array ( [0] => 12345 [1] => 67 [2] => 89 )
上述代码中,preg_match_all() 会查找所有匹配项。注意小数点 . 不是数字,因此 67.89 会被拆分为 67 和 89 两个独立匹配项。若需匹配包含小数点的浮点数,可使用 /\d+(\.\d+)?/。
preg_replace()替换字符串里的数字
使用 preg_replace() 可以将字符串中的数字替换为其他内容。例如,将手机号中间四位隐藏,或统一格式化日期。替换时需注意正则表达式的捕获组,以便在替换字符串中引用原匹配部分。

$phone = "13812345678";
$masked = preg_replace("/^(\d{3})\d{4}(\d{4})$/", "$1****$2", $phone);
echo $masked; // 输出: 138****5678
此例中,正则表达式 /^(\d{3})\d{4}(\d{4})$/ 使用了锚点 ^ 和 $ 确保匹配整个字符串,并通过括号 () 创建捕获组。替换字符串 "$1****$2" 引用了第一组和第三组数字,中间插入星号。若输入字符串长度不足或格式不符,preg_replace() 将返回原字符串不变。
基于输入 "ID: 1001, Status: active" 的匹配结果问题
对于输入字符串 "ID: 1001, Status: active",使用 /\d+/ 匹配时,只会提取出 1001,而不会匹配 active 中的任何字符,因为字母不属于 \d 的范围。若需同时匹配数字和字母,需改用 /[a-zA-Z0-9]+/ 或 /\w+/。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











