最简洁的正则去首尾空格方式是用^s+|s+$全局替换为空字符串,因s*会匹配空位置导致误删,而s+确保至少一个空白;但优先推荐原生trim()/strip()方法,性能更好且unicode兼容更优。

直接用正则表达式去除首尾空格,最简洁的方式是使用 ^\s+|\s+$ 这个模式,全局替换为空字符串。它分别匹配开头的连续空白字符(^\s+)和结尾的连续空白字符(\s+$),中间用 | 表示“或”。
常见语言中的实际写法
不同语言调用方式略有差异,但核心正则是一致的:
-
JavaScript:
str.replace(/^\s+|\s+$/g, '')(注意g标志,否则只替换第一个匹配) -
Python:
import re; re.sub(r'^\s+|\s+$', '', s)(r''避免转义干扰) -
Java:
s.replaceAll("^\s+|\s+$", "")(replaceAll默认支持正则) -
PHP:
preg_replace('/^\s+|\s+$/u', '', $str)(u支持 Unicode 空白)
为什么不用 \s*?
s* 表示“零个或多个空白”,它会匹配空位置(比如字符串开头、结尾甚至中间任意两字符之间),导致意外删掉内容或报错。而 s+ 要求至少一个空白字符,更安全准确。去掉首尾空格的本质是“删掉存在的空白”,不是“匹配可能不存在的位置”。
注意 Unicode 空白字符
标准 \s 在多数引擎中已涵盖常见 Unicode 空白(如 、全角空格、换行符等),但某些环境(如旧版 JavaScript)可能不完全支持。若需严格兼容,可显式列出:^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$,其中 \uFEFF 是 BOM,\xA0 是不间断空格。
其实有更简单的方法?
是的——大多数语言内置了 trim() 类方法(如 JS 的 str.trim()、Python 的 s.strip()),它们专为去首尾空白优化,性能更好、语义更清晰、还自动处理各类 Unicode 空白。正则适合需要同时做其他文本清洗的场景,单纯去空格,优先用原生方法。











