首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex匹配给定路径的所有有效URL变体

Regex匹配给定路径的所有有效URL变体
EN

Stack Overflow用户
提问于 2016-07-21 04:03:22
回答 3查看 161关注 0票数 0

我正在与一个正则表达式做斗争,我希望匹配路径的所有“有效”变体。

我对有效的定义是,它可以后面跟着一个可选的斜杠,以及可选的查询字符串或单个'?

它需要在PHP和JavaScript中都能工作,所以肯定/消极的观点是不可能的。

这里有一个可以修补的起点,http://regexr.com/3drov

在撰写本文时,我已经得到了^\/page-title\/?(?=\?).*$,我认为\/?将允许我匹配前两行,作为一个可选的斜杠。但我想我现在有点糊涂了。

我尝试了一个条件(?(?=)then|else)类型,我认为它在JS中是支持的,但是从regexr.com那里得到了一个语法错误。

所以,任何帮助都是非常感谢的。谢谢!

它们应该与输入: /page-title匹配。

代码语言:javascript
复制
/page-title
/page-title/
/page-title?
/page-title/?
/page-title?foo
/page-title/?foo=bar

这些不应该

代码语言:javascript
复制
/page-title/foo/
/page-title-foo-bat

更新

我没有意识到JavaScript不支持传统的条件语法。在阅读了这篇文章(我想模仿javascript regex中的条件词。)之后,我似乎让它与^\/page-title\/?((?=\?).*|)$一起工作

将更新保存到这里进行测试:http://regexr.com/3drq0

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-21 05:03:42

也许是这样:

代码语言:javascript
复制
^\/page-title\/?(\?.*)?$

启动/page-title

可选/

可选(?后面跟着任何东西或没有)

结束

http://regexr.com/3drpb

票数 1
EN

Stack Overflow用户

发布于 2016-07-21 04:25:33

我在积极的展望中使用了一个负的前瞻性,用一个额外的\来否定任何选项,检查这个选项对你是否正确:^(?=\/page-title\/?\??(?!(.+\/)|-)).+

演示

票数 1
EN

Stack Overflow用户

发布于 2016-07-21 04:45:12

这应该可以做到:

^\/page-title[\/\?]?(\?[^\/]*)?$

^\/page-title(\/|\?)?(\?[^\/]*)?$

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38494677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档