javascript - 正则表达式匹配两个字符之间的字符不包含在Javascript中
问题描述
我有一个要使用 React 路由器路由到的 url。最后的 id 是改变的部分。
https://mywebsite.com/p/foo-bar-fizz-buzz-myid1234
我需要在反应路由器中使用的正确正则表达式是什么?现在我有以下内容。
<Route path="(p\/(.*-))":myId component={myComponent} />
我的理解是,我需要获取“p/”之后的值,包括最后一个破折号。我已经看到了涉及环顾四周的答案,但 Javascript 不支持这些答案。我怎样才能做到这一点?
解决方案
据我了解,您确实希望匹配所有内容,直到最后一个破折号。
这可以用这个表达式来完成。
/\/p\/.+\-/
- 匹配 /p/
- 匹配任何字符中的一个或多个,但换行符除外。只要匹配,这将继续。
- 强制它匹配
-
,所以它会在这里停止前一个表达式。
React Router 使用path-to-regexp
,因此您的代码应与此解决方案一起使用
<Route path="(p\/(.+\-)):myId" component={myComponent} />
推荐阅读
- reactjs - 选择动态 - reactjs
- vue.js - 为什么我的路由在 vue-js 中改为延迟加载路由后无法正常工作?
- php - 尝试创建新的 Laravel 项目时出现此错误
- linux - GNU M4 似乎在 ifelse 中访问了不必要的值
- vb.net - 图片框的 GetType.GetProperties
- javascript - 当我在 React.js 中更改活动选项卡时,如何防止状态数据被清除?
- c++ - 替换 .o 文件 makefile 中的所有棋子
- python - 如何将字符串的所有第一个字符分组到字符串列表中,字符串的所有第二个字符等等在python中的字符串列表中
- javascript - 店面 UI - SfComponentSelect 无法正常工作
- c++ - 优先级队列中的自定义比较器中的访问冲突