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

如何用JavaScript正则实现路径匹配中可选右侧部分的贪婪匹配

解决方案

你的问题出在正则开头的.*\/是贪婪匹配,会直接匹配到路径中最后一个/,导致A分组被错误赋值为最后一段数字。调整方案如下:

修正后的正则表达式

如果B分组仅需匹配数字:

const regex = /^\/(?<A>\d+)(\/(?<B>\d+))?$/;

如果B分组需要匹配任意字符(除换行外):

const regex = /^\/(?<A>\d+)(\/(?<B>.+))?$/;

验证结果

  • 匹配/1234/5678:
    regex.exec("/1234/5678").groups; // { A: '1234', B: '5678' }
    
  • 匹配/1234:
    regex.exec("/1234").groups; // { A: '1234', B: undefined }
    

关键调整说明

  1. 去掉了原正则中贪婪的.*\/,改用^\/从路径开头精确匹配,确保第一个/后的内容直接进入A分组。
  2. 将原B分组内的非贪婪匹配.+?改为贪婪匹配.+(或针对数字的\d+),这样当路径存在/xxx后缀时,会优先完整匹配该部分作为B分组;当后缀不存在时,B分组自然为undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:48:21