You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP去除字符串首尾下划线求助:正则表达式尝试失败

解决PHP去除字符串首尾下划线的问题

嘿,我来帮你搞定这个小问题~

你现在遇到的情况是,想用正则去除字符串首尾的下划线,但之前写的正则只处理了结尾,没管开头,所以没达到预期效果。先给你分析下原来的正则问题:
你写的preg_replace('/[^a-z]+\Z/i', '', '____a_b_c__________')里,\Z只匹配字符串结尾,[^a-z]+会匹配非字母的字符(包括下划线),但它只处理了结尾的下划线,开头的____完全没被匹配到,所以结果肯定不对。

下面给你两种靠谱的解决方案:

方法一:用PHP内置trim()函数(推荐)

这是最简单高效的方法,trim()本来就是用来去除字符串首尾指定字符的,直接指定下划线就行:

$originalStr = '____a_b_c__________';
$cleanStr = trim($originalStr, '_');
echo $cleanStr; // 输出:a_b_c

原生内置函数的性能比正则好很多,处理这种简单的首尾字符去除,优先用它准没错。

方法二:使用正确的正则表达式

如果你一定要用正则实现,那可以匹配开头的一个或多个下划线和结尾的一个或多个下划线,然后替换为空:

$originalStr = '____a_b_c__________';
$cleanStr = preg_replace('/^_+|_+$/', '', $originalStr);
echo $cleanStr; // 输出:a_b_c

这里的正则规则:

  • ^_+:匹配字符串开头的一个或多个下划线
  • _+$:匹配字符串结尾的一个或多个下划线
  • |:表示“或”的逻辑,把开头和结尾的下划线都替换掉

这样就能精准去除首尾的所有下划线,同时保留中间的_啦。

内容的提问来源于stack exchange,提问作者LargeTuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:23:02