gpt4 book ai didi

Javascript 路由正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 04:06:25 25 4
gpt4 key购买 nike

我需要构建一个路由器,将 REST 请求路由到正确的 Controller 和操作。这里有一些例子:

POST /users
GET /users/:uid
GET /users/search&q=lol
GET /users
GET /users/:uid/pictures
GET /users/:uid/pictures/:pid

拥有一个单一的正则表达式并尽可能好是很重要的,因为路由是必不可少的并且在每次请求时都会完成。

我们首先必须用正则表达式替换 url 中的 :(直到结束或直到下一个正斜杠/),之后我们可以使用它来验证带有请求 url 的 url。

我们如何用正则表达式替换这些动态路由?就像搜索以“:”开头并以“/”、字符串结尾或“&”结尾的字符串。

这是我尝试过的:

var fixedUrl = new RegExp(url.replace(/\\\:[a-zA-Z0-9\_\-]+/g, '([a-zA-Z0-0\-\_]+)'));

由于某种原因,它不起作用。我如何实现一个用正则表达式替换 :id 的正则表达式,或者在与真实请求 url 进行比较时忽略它们。

感谢帮助

最佳答案

我将使用 :[^\s/]+ 来匹配以冒号开头的参数(匹配 :,然后匹配除 /之外的尽可能多的字符 和空格)。

作为替换,我使用 ([\\w-]+) 来匹配任何字母数字字符,-_,在捕获组中,假设您也有兴趣使用匹配的参数。

var route = "/users/:uid/pictures";
var routeMatcher = new RegExp(route.replace(/:[^\s/]+/g, '([\\w-]+)'));
var url = "/users/1024/pictures";

console.log(url.match(routeMatcher))

关于Javascript 路由正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com