寻找正则表达式来匹配URL的某些部分

时间:2012-10-04 09:48:41

标签: c# regex

我正在寻找匹配URL的某些部分的正则表达式来相应地重定向我的页面。

我用谷歌搜索它没有运气。

EX:

http://www.somesite.com/cat1/cat2/

在这个我希望匹配域名后的任何单词或字符,所以它将是/ cat1 / cat2 /

http://www.somesite.com/cat1/cat2/cat3/

在这个我希望匹配域名后的任何单词或字符,所以它将是/ cat1 / cat2 / cat3 /


寻找2个差异正则表达式来匹配这种网址。第一个正则表达式只匹配仅匹配3个类别的2个类别和第二个正则表达式。

提前谢谢你们。

4 个答案:

答案 0 :(得分:2)

这适用于第一种情况,第一种捕获组中包含所需部分:

^http://[^/]+(/(?:[^/]*/){2})$

针对第二种情况,将{2}部分更改为{3}

答案 1 :(得分:1)

听起来很简单。

第一个正则表达式如下:     HTTP://.+/([^ /] +)/([^ /] +)/

我会让你猜出第二个正则表达式是什么。

答案 2 :(得分:1)

据我所知,正则表达式不支持反向匹配。这意味着,你不能写一个与正则表达式中的NOT匹配的正则表达式(如果我错了,请有人在此纠正我)。话虽这么说,你可以用这个:

^http:\/\/[^\/]+\/(.*)

使用分组,您可以匹配URL域之后的内容。因此,在这种情况下,您正在寻找的是通过$ 1(由正则表达式末尾括号表示的组)可以获取的内容。另一个重要的事情是在正则表达式的开头^。这样您就不会捕获作为URL的查询参数传递的URL字符串。

答案 3 :(得分:0)

您可以从windwo.location.pathname

获取路径名称
var path = window.location.pathname

获得此path后,您可以使用split('/');

获取路径