node.js - 带有正则表达式的路由参数以捕获所有内容
问题描述
在我的 Node.js (+express) 应用程序中,我期望以下请求:
GET /images/foo1/id500/abc5
GET /images/foo2/id540
GET /images/id500/foo800
换句话说,请求将具有常量前缀/images/
和一些我需要捕获的额外随机路径。
app.get("/images/:foo(*)", (req, res) => {
console.log(req.params.foo);
res.send(req.params.foo);
});
上面的代码完全符合我的要求,但如果我输入“。” (任何字符)到正则表达式然后它停止工作......
以下代码不起作用:
app.get("/images/:foo(.*)", (req, res) => {
console.log(req.params.foo);
res.send(req.params.foo);
});
为什么使用时或按预期工作:foo(.*)
时没有给出预期的结果?:foo(*)
:foo(\\w*)
解决方案
如果要匹配正则表达式,必须使用正则表达式匹配。区别如下:
app.get(/a/, (req, res) => { // Matches anything with an “a” in it, such as /xax.
app.get('a', (req, res) => { // matches exactly /a
您可以将示例重写为正则表达式,请记住转义/
:
app.get(/\/images\/:foo(.*)/, (req, res) => {
推荐阅读
- python - 如何在运行时在 Python 数组中添加值?
- testing - Alexa 测试控制台不问我
- java - 在 libgdx 中加载资产以进行 JUnit 测试
- php - Laravel 6.11:Accessor 中的购物车 HasMany::fisrt() 不起作用
- ios - 如何以编程方式控制 MPNowPlayingInfoCenter 中的播放按钮
- prolog - truncate(7^sqrt(8)-8^sqrt(7)) 可以通过 CLP(FD) 解决吗?
- php - 使用 FFMPEG 不间断流到 rtmp
- java - Selenium_无法点击 Gaana 网页上的“继续使用 google”链接
- python - 绘图速度改进
- sas - 从 NVARCHAR 转换为 ASCII 时出错