首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配特定URL片段的正则表达式,而不是所有其他可能的URL

问匹配特定URL片段的正则表达式,而不是所有其他可能的URL
EN

Stack Overflow用户
提问于 2019-08-27 19:27:02
回答 3查看 981关注 0票数 3

我有-让-比方说- example.com网站和那里我有account页面。它可能有GET参数,这也被认为是帐户页面的一部分。它也可以具有URL片段。如果它是home.html片段-它仍然是帐户页面。如果是另一个片段,那么它就是帐户页面的另一个子页面。

所以-我需要一个RegEx (JS)来匹配这个案例。这就是我到目前为止成功构建的:

代码语言:javascript
复制
example.com\/account\/(|.*\#home\.html|(\?(?!.*#.*)))$

https://regex101.com/r/ihjCIg/1

前4个是我需要的案例。如您所见,第二行与我的RegEx不匹配。

这里我漏掉了什么?

EN

回答 3

Stack Overflow用户

发布于 2019-08-27 20:00:18

您可以创建2个可选组,1个用于选择性地匹配?并匹配除#之外的任何字符,另一个可选组与#home.html匹配

注意转义圆点以匹配字面意思。

代码语言:javascript
复制
^example\.com\/account\/(?:\?[^#\r\n]*)?(?:#home\.html)?$

  • ^开始string
  • example\.com\/account\/匹配start
  • (?:非捕获组
    • \?[^#\r\n]*匹配?和0+乘以除#或newline

之外的任何字符

​

关闭

  • )?组并将其设置为optional
  • (?:非捕获组
    • #home\.html Match #home.html

​

关闭

  • )?组并将其设置为optional
  • $

Regex demo

​

代码语言:javascript
复制
let pattern = /^example\.com\/account\/(?:\?[^#\r\n]*)?(?:#home\.html)?$/;
[
  "example.com/account/",
  "example.com/account/?brand=mine",
  "example.com/account/#home.html",
  "example.com/account/?brand=mine#home.html",
  "example.com/account/#other.html",
  "example.com/account/?brand=mine#other.html"
].forEach(url => console.log(url + " --> " + pattern.test(url)));

​

票数 3
EN

Stack Overflow用户

发布于 2019-08-27 19:40:50

组中的第三个备选方案具有负面的前瞻性,这确保它拒绝任何包含#的文本,但您没有特别提到任何应该与其余内容匹配的内容,直到行尾。查看这个更新的正则表达式演示,

https://regex101.com/r/ihjCIg/3

如果你注意到了,我已经在com之前避开了你的第一个点,并在负前视部分之后添加了.*,以便它与你的第二个样本相匹配。

票数 1
EN

Stack Overflow用户

发布于 2019-08-27 19:44:57

代码语言:javascript
复制
example\.com\/account\/((\??[^#\r\n]+)?(#?home\.html)?)?$

这与您的前四个字符串匹配

代码语言:javascript
复制
example.com/account/
example.com/account/?brand=mine
example.com/account/#home.html
example.com/account/?brand=mine#home.html

不包括你的最后两个

代码语言:javascript
复制
example.com/account/#other.html
example.com/account/?brand=mine#other.html
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57673669

复制
相关文章

相似问题

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