如何编写正确的正则表达式提取指定URL中的分类数字段?
正则匹配URL分类ID的修正方案
正确正则表达式
/\/category(?:\/\w+)?\/(\d+)\//g
匹配逻辑说明
- 先匹配固定路径标识
/category,精准限定匹配范围,避免扫到其他路径下的数字 - 非捕获组
(?:\/\w+)?为可选匹配段:对应分类列表页/category/[分类名]/里的分类名路径,问号表示该段可以不存在,兼容商品详情页/category/[分类ID]/的路径结构 - 匹配分隔斜杠后,通过捕获组
(\d+)提取连续数字的分类ID - 末尾强制匹配斜杠,避免捕获路径末尾或其他位置的零散数字
兼容调整说明
如果分类名称包含中划线、小数点等非字母数字下划线的字符,可以把非捕获组内的\w+替换为[^/]+,即可匹配除斜杠外的所有分类名字符。
测试验证结果
对你给出的4个URL的捕获结果完全符合需求:
- 示例1捕获值:
55 - 示例2捕获值:
5 - 示例3捕获值:
55 - 示例4捕获值:
5
不会出现误匹配3031、30的问题,也不会漏抓小位数的分类ID。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

