首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当regex模式有特定数量的段时,将其匹配到URL中

当regex模式有特定数量的段时,将其匹配到URL中
EN

Stack Overflow用户
提问于 2014-09-18 15:06:36
回答 3查看 1.3K关注 0票数 1

我有这样的网址:

代码语言:javascript
复制
example.com/test/testurl
example.com/test/test-url
example.com/test/testurl/content
example.com/test/test-url/content

我在这里做一个重定向,所以我需要一个regex来匹配url,当它只有两个段(就像前两个段一样),在一个组中获得第二个段,但是在所有其他部分中失败。

到目前为止,我完成的模式如下:

代码语言:javascript
复制
test\/(\w+)(?!\/)\b

这个与第一个url匹配,在第三个url上失败,太好了。

但是它最终与第二个和第四个url相匹配,将单词捕获到破折号。我要把我的头发拔出来,任何指点都很感激。谢谢!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-18 15:15:13

先把\b扔出去。也就是说,为了匹配单词边界,URL可以包含非单词字符。

我将假设您在没有任何其他随附文本的情况下在它自己的字符串中获得url。

在这种情况下,下列regex将:

  • 匹配字符串的开头
  • 匹配一个或多个字符,直到第一个正斜杠
  • 匹配/测试/
  • 将一个或多个字符匹配到另一个斜杠。
  • 可选匹配斜杠
  • 匹配字符串的末尾

REGEX

代码语言:javascript
复制
^[^/]+/test/[^/]+/?$

雷伊

代码语言:javascript
复制
NO MATCH: example.com/test/
MATCH: example.com/test/testurl
MATCH: example.com/test/test-url
MATCH: example.com/test/test-url/
NO MATCH: example.com/test/testurl/content
NO MATCH: example.com/test/test-url/content

另外,如果需要添加协议,可以重写regex:

代码语言:javascript
复制
^[^:]+://[^/]+/test/[^/]+/?$
票数 3
EN

Stack Overflow用户

发布于 2014-09-18 15:32:39

代码语言:javascript
复制
^(?=[^\/]*\/[^\/]*\/[^\/]*$).*

尝尝这个。只有当url有两个段时,这才会匹配。见演示。

http://regex101.com/r/gG5fF6/3

票数 2
EN

Stack Overflow用户

发布于 2014-09-18 15:09:30

请使用此正则表达式:

代码语言:javascript
复制
test/([^/]+)

它将捕获在test/之后不是斜线的所有内容。

如果需要,适当地转义斜杠。

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

https://stackoverflow.com/questions/25916295

复制
相关文章

相似问题

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