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

koa-router内联正则表达式失效报错:Unexpected [ at 11

解决koa-router路由参数内联正则报错问题

问题原因

你使用的旧版内联正则语法:id([0-9]{5}),在新版koa-router(v12+)中已不再兼容。因为新版koa-router依赖的path-to-regexp v6+重构了路由解析规则,原语法会触发解析错误。

解决方案

方案1:使用新版内联正则语法

将原语法的括号替换为尖括号<>,这是path-to-regexp v6+支持的自定义匹配器标准写法:

import Koa from 'koa';
import Router from 'koa-router';

const app = new Koa();
const router = new Router();

router.get('/hello/:id<[0-9]{5}>', (ctx) => {
  const id = ctx.params.id;
  console.log(id);
  ctx.body = `Hello ${id}`;
});

app.use(router.routes());
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

方案2:通过路由选项单独指定正则

如果不习惯内联语法,可以在路由配置的regexp选项中定义参数的正则规则:

import Koa from 'koa';
import Router from 'koa-router';

const app = new Koa();
const router = new Router();

router.get('/hello/:id', { regexp: { id: /[0-9]{5}/ } }, (ctx) => {
  const id = ctx.params.id;
  console.log(id);
  ctx.body = `Hello ${id}`;
});

app.use(router.routes());
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

方案3:降级koa-router到兼容旧语法的版本

若想继续使用原写法,可安装koa-router v11.x版本(该版本依赖path-to-regexp v5,支持旧版内联正则):

npm install koa-router@11.0.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:20:14