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

如何编写JS正则匹配@符号外的空白字符实现字符串正确分割

方案1:使用带预查的正则直接分割

你可以通过正向预查判断空白是否处于成对的@外部,正则表达式为/\s+(?=(?:[^@]*@[^@]*@)*[^@]*$)/,用法如下:

const inputStr = "[0] == @Item 1@";
const splitResult = inputStr.split(/\s+(?=(?:[^@]*@[^@]*@)*[^@]*$)/);
// splitResult = ["[0]", "==", "@Item 1@"]

正则逻辑说明

  • \s+ 匹配1个及以上连续空白字符
  • 正向预查(?=(?:[^@]*@[^@]*@)*[^@]*$)用于校验当前空白之后的@总数为偶数,说明空白不在@包裹的内容内部:
    • (?:[^@]*@[^@]*@)* 匹配0组或多组成对出现的@
    • [^@]*$ 匹配字符串末尾剩余的所有非@字符

该方案适用场景:字符串中不会出现单个未闭合的@,且@没有嵌套使用的情况。


方案2:匹配目标片段(兼容性更强)

如果需要兼容@未闭合的场景,更推荐先直接匹配所有需要保留的片段,再过滤空值:

const inputStr = "[0] == @Item 1@";
const splitResult = inputStr.match(/@[^@]*@|\S+/g) || [];
// splitResult = ["[0]", "==", "@Item 1@"]

正则逻辑说明

优先匹配被@包裹的完整片段@[^@]*@,再匹配所有连续非空白字符\S+,逻辑更简单,边界兼容性更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:54:04