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

无法按分隔符拆分包含URL与模糊哈希的字符串

拆分"URL&&&&模糊哈希"格式的重复字符串

给定一个由图片URL&&&&模糊哈希重复组成的字符串,各单元之间用逗号分隔,需要将其拆分为包含每个完整单元的数组。

输入示例

https://example.com/1.jpg&&&&UAD%@4mQ%iv%7CH;?JD$-p8qD%%Nnf:QX.Vr-B,https://example.com/2.jpg&&&&URCPxDxu4mog^-xuIUjc%Nxvn,Rj%Ot8RiRi,https://example.com/3.jpg&&&&UeF68}_N-=-;%MRjRjofM|M{j[ogxuxuofWA,https://example.com/4.jpg&&&&U|H__P%MRjof_4xuWAof%NoejskCozaeofof,https://example.com/5.jpg&&&&UEE3g_W9D?%Y_IRURj%cNHt6xUaeR%t7j=of

期望输出

["https://example.com/1.jpg&&&&UAD%@4mQ%iv%7CH;?JD$-p8qD%%Nnf:QX.Vr-B","https://example.com/2.jpg&&&&URCPxDxu4mog^-xuIUjc%Nxvn,Rj%Ot8RiRi","https://example.com/3.jpg&&&&UeF68}_N-=-;%MRjRjofM|M{j[ogxuxuofWA","https://example.com/4.jpg&&&&U|H__P%MRjof_4xuWAof%NoejskCozaeofof","https://example.com/5.jpg&&&&UEE3g_W9D?%Y_IRURj%cNHt6xUaeR%t7j=of"]

你之前正则的问题分析

你尝试的两个正则都存在核心缺陷:

  • /&&&&.+?(,https)?/ig:仅匹配&&&&后的内容,完全遗漏了前面的URL部分,且(,https)?会错误捕获单元末尾的逗号和下一个单元的URL前缀,导致结果缺失关键信息。
  • /.+&&&&.+(,https)?/ig:.的贪婪匹配会一次性抓取多个单元的内容,无法精确分割单个单元,同样会错误包含末尾的逗号和下一个单元的前缀。

解决方案

方案1:使用split结合正向预查分割

利用正向预查(?=https:\/\/)定位单元分隔的逗号——即仅在逗号后面紧跟https://时,才将该逗号作为分割点,这样不会破坏单元本身的内容。

const inputStr = "https://example.com/1.jpg&&&&UAD%@4mQ%iv%7CH;?JD$-p8qD%%Nnf:QX.Vr-B,https://example.com/2.jpg&&&&URCPxDxu4mog^-xuIUjc%Nxvn,Rj%Ot8RiRi,https://example.com/3.jpg&&&&UeF68}_N-=-;%MRjRjofM|M{j[ogxuxuofWA,https://example.com/4.jpg&&&&U|H__P%MRjof_4xuWAof%NoejskCozaeofof,https://example.com/5.jpg&&&&UEE3g_W9D?%Y_IRURj%cNHt6xUaeR%t7j=of";
const resultArray = inputStr.split(/,(?=https:\/\/)/);
console.log(resultArray);

方案2:使用match匹配完整单元

编写正则匹配从https://开始,直到下一个单元的起始逗号(或字符串结尾)的所有内容,用非贪婪匹配+?避免过度抓取。

const inputStr = "https://example.com/1.jpg&&&&UAD%@4mQ%iv%7CH;?JD$-p8qD%%Nnf:QX.Vr-B,https://example.com/2.jpg&&&&URCPxDxu4mog^-xuIUjc%Nxvn,Rj%Ot8RiRi,https://example.com/3.jpg&&&&UeF68}_N-=-;%MRjRjofM|M{j[ogxuxuofWA,https://example.com/4.jpg&&&&U|H__P%MRjof_4xuWAof%NoejskCozaeofof,https://example.com/5.jpg&&&&UEE3g_W9D?%Y_IRURj%cNHt6xUaeR%t7j=of";
const resultArray = inputStr.match(/https:\/\/.+?(?=,https:\/\/|$)/g);
console.log(resultArray);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:10:04