首页 > 解决方案 > 正则表达式匹配两个字符之间的字符不包含在Javascript中

问题描述

我有一个要使用 React 路由器路由到的 url。最后的 id 是改变的部分。

https://mywebsite.com/p/foo-bar-fizz-buzz-myid1234

我需要在反应路由器中使用的正确正则表达式是什么?现在我有以下内容。

<Route path="(p\/(.*-))":myId component={myComponent} />

我的理解是,我需要获取“p/”之后的值,包括最后一个破折号。我已经看到了涉及环顾四周的答案,但 Javascript 不支持这些答案。我怎样才能做到这一点?

标签: javascriptregexreactjsreact-router

解决方案


据我了解,您确实希望匹配所有内容,直到最后一个破折号。

这可以用这个表达式来完成。

/\/p\/.+\-/
  • 匹配 /p/
  • 匹配任何字符中的一个或多个,但换行符除外。只要匹配,这将继续。
  • 强制它匹配-,所以它会在这里停止前一个表达式。

React Router 使用path-to-regexp,因此您的代码应与此解决方案一起使用

<Route path="(p\/(.+\-)):myId" component={myComponent} />

推荐阅读