0

应用于此字符串的正则表达式(从 PHP 移植到 Javascript、Node.js):

/users/:uid/posts/:pid
/users/:uid
/messages/:mid

上面的字符串包含参数(在“:”符号之后),直到下一个正斜杠,我用字符串正则表达式替换它们。最终应该是这样的:

/users/([a-zA-Z0-9\-\_]+)/posts/([a-zA-Z0-9\-\_]+)

所以路由中的所有参数,都应该用正则表达式字符串替换。我使用以下代码来实现这一点:

var fixedRoute = route[url].replace(/\\\:[a-zA-Z0-9\_\-]+/, '([a-zA-Z0-9\-\_]+)');

输出是一样的,字符串没有被替换。谁能帮我解决这个正则表达式?

非常感谢

4

1 回答 1

1

您忘记了捕获组,它是反向引用。

所以这会变成 'hihi-foobar'.replace(/foo(bar)/i, $1);
将呈现“hihi-bar”。

更新(基于上面的评论):

.replace(/:[upm]id/ig, ([a-zA-Z0-9\-\_]+));
于 2012-07-31T00:08:39.923 回答