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

JS动态正则匹配购物车Cookie存储商品ID与数量功能失效问题

问题根因

  • 使用RegExp构造函数传入字符串参数时,反斜杠是JS字符串的转义字符,你代码中写的\d会被先解析为普通字符d,最终生成的正则实际规则为/product_id:d+/,无法匹配数字格式的数量,这是正则失效的核心原因。
  • 未添加匹配边界,会出现误匹配问题:比如商品ID为1时,只要Cookie里存在11:2、21:3这类ID包含1的记录,就会被误判为当前商品已加入购物车。

修复代码

// 正则增加边界匹配,反斜杠需要双重转义
const reg = new RegExp(`(^|,)${product_id}:\\d+(,|$)`);
if (!reg.test(cart_cookie)){
    // 兼容Cookie为空的场景,避免生成的字符串开头多逗号
    const values = cart_cookie ? cart_cookie.split(',') : [];
    values.push(`${product_id}:1`);
    setCookie('cart', values.join(','), 7);
} else {
    console.log('already in cart.')
}

补充优化建议

如果你的商品ID可能包含.、*、+这类正则特殊字符,需要先对product_id做正则转义处理,避免特殊字符破坏正则匹配逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:04