正则表达式帮助 - 剥离域名

时间:2012-03-08 18:08:21

标签: regex

说我的网址是

  • https://foo.bar.com/somedirectory/somefile.php

  • http://abc.bar.co.uk/somedirectory/somefile.php

正则表达式会得到什么

  • /somedirectory/somefile.php

  • somedirectory/somefile.php

2 个答案:

答案 0 :(得分:2)

假设您的网址始终以http://https://开头,这应该有效(因为您没有指定语言,这是Perl中的实现):

use strict;
use warnings;

my @urls=("https://foo.bar.com/somedirectory/somefile.php", "http://abc.bar.co.uk/somedirectory/somefile.php");

foreach my $url(@urls)
{
  if($url=~/^http(?:s)?:\/\/[^\/]+(\/.*)$/)
  {
    print "$1\n";
  }
  else
  {
    print "$url did not match!\n";
  }
}

输出结果为:

/somedirectory/somefile.php
/somedirectory/somefile.php

答案 1 :(得分:1)

<强>代码

使用javascript(你可以测试它here):

返回“/somedirectory/somefile.php”:

var inputString = "https://foo.bar.com/somedirectory/somefile.php";
var regex = /https?:[\/]{2}\S*?(\/\S*)/;
var outputString = inputString.replace(regex,"$1");
alert(outputString);​

要返回“somedirectory / somefile.php”,请更改正则表达式:

var regex = /https?:[\/]{2}\S*?\/(\S*)/;

<强>正则表达式

核心正则表达式如下。这可能需要根据您使用的语言进行一些调整:

https?:[\/]{2}\S*?(\/\S*)   

要为ftp站点扩展此功能,您可以使用

(ht|f)tps?:[\/]{2}\S*?(\/\S*)