正则表达式匹配某个url

时间:2015-02-04 13:57:14

标签: regex

我讨厌发布像这样的问题,但是我真的很喜欢正则表达式,如果那里的专家可以给我一个快速解决方案,我会非常感激。

我需要一个正则表达式来匹配像这样的网址模式

https://mywebsite.com/foo/[a-z]/[a-z]/[0-9]/[0-9]/[0-9]
  • 其中[a-z]表示任何单词,第1和第2 [a-z]都是可选的(斜杠也是可选的)
  • 和[0-9]表示任何数字,但所有三个[0-9]都是强制性的 并且不应该遵循第三个[0-9]

匹配示例:

不匹配示例:

HELP!

2 个答案:

答案 0 :(得分:2)

好像你想要这样的东西,

https:\/\/mywebsite\.com\/foo(?:\/[a-z]+){0,2}(?:\/[0-9]+){3}

必要时添加锚点。

^https:\/\/mywebsite\.com\/foo(?:\/[a-z]+){0,2}(?:\/[0-9]+){3}$

DEMO

{0,2}中的范围量词(?:\/[a-z]+){0,2}重复前一个/[a-z]+的标记,零或一次或两次。

答案 1 :(得分:0)

“数字”是指数字还是数字? 我假设你的意思是数字。

符合您的要求:

/^https:\/\/mywebsite\.com\/foo\/[a-z]*\/[a-z]*\/\d+\/\d+\/\d+$/

然而,当你写“第一和第二[a-z]是可选的”我猜你的意思是跟随它们的斜线也应该是可选的。如果是这种情况,请使用:

/^https:\/\/mywebsite\.com\/foo\/([a-z]+\/)?([a-z]+\/)?\/\d+\/\d+\/\d+$/

最后的$确保没有其他内容。