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

如何用正则表达式选中引号首尾空格并移除(不使用trim())

解决方案

直接使用以下正则表达式进行全局替换,将匹配到的内容替换为空字符串即可:

(?<=")\s+|\s+(?=")

正则说明

  • (?<=")\s+:匹配紧跟在双引号之后的一个或多个空格,对应引号内部开头的冗余空格
  • \s+(?="):匹配紧跟在双引号之前的一个或多个空格,对应引号内部结尾的冗余空格
  • 用|分隔两种匹配场景,开启全局替换(g标志)就能精准移除所有引号内部的首尾空格,同时保留引号内单词之间的正常空格

验证示例

  1. 原字符串:red " blue " green! → 替换后:red "blue" green!
  2. 原字符串:" red blue green " → 替换后:"red blue green"
  3. 原字符串:" red " " blue " " green " → 替换后:"red" "blue" "green"

原正则问题分析

你之前使用的正则\s+(?=(?:(?:[^"]*"){2})*[^"]*"[^"]*$)是通过统计后续引号数量判断空格是否在引号内,但它会匹配引号内所有后续引号数为奇数的空格——包括单词之间的中间空格,这就是引号内有多个单词时失效的原因。新正则通过断言精准锁定引号的前后位置,只处理首尾冗余空格,不会影响内部正常空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:57:20