使用正则表达式从url中删除主机名和端口

时间:2012-07-18 21:41:31

标签: javascript html regex

我想删除

http://localhost:7001/

部分来自

http://localhost:7001/www.facebook.com

将输出设为

www.facebook.com

我可以使用什么正则表达式来实现这种确切的模式?

10 个答案:

答案 0 :(得分:8)

要使用javascript,您可以使用以下代码:

var URL = "http://localhost:7001/www.facebook.com";
var newURL = URL.replace (/^[a-z]{4,5}\:\/{2}[a-z]{1,}\:[0-9]{1,4}.(.*)/, '$1'); // http or https
alert (newURL);

在行动Here

中查看此代码

此致 维克多

答案 1 :(得分:5)

这就是我在不使用正则表达式的情况下使其工作的方式:

var URL = "http://localhost:7001/www.facebook.com";

var URLsplit = URL.split('/');

var host = URLsplit[0] + "//" + URLsplit[2] + "/";

var newURL = URL.replace(host, '');

虽然可能不是一个优雅的解决方案,但对于那些对正则表达式没有多少经验的人来说应该更容易理解(比如我!呃!)。

答案 2 :(得分:3)

对于一个简单的正则表达式来匹配任何协议,域和(可选)端口:

var url = 'http://localhost:7001/www.facebook.com';

// Create a regex to match protocol, domain, and host
var matchProtocolDomainHost = /^.*\/\/[^\/]+:?[0-9]?\//i;

// Replace protocol, domain and host from url, assign to `myNewUrl`
var myNewUrl = url.replace(matchProtocolDomainHost, '');

现在myNewUrl === 'www.facebook.com'

请参阅demo on regex101

答案 3 :(得分:2)

基于@atiruz答案,但这是

url = url.replace( /^[a-zA-Z]{3,5}\:\/{2}[a-zA-Z0-9_.:-]+\//, '' );
  • 最短
  • 也可以使用https或ftp
  • 可以使用或不使用显式端口

答案 4 :(得分:1)

或者,您可以使用as3corelibURI class来解析网址。这样你就不必进行任何字符串操作,这有助于避免做出无意的假设。它需要更多的代码行,但它是一个更通用的解决方案,应该适用于各种各样的情况:

var url : URI = new URI("http://localhost:7001/myPath?myQuery=value#myFragment");

// example of useful properties
trace(url.scheme); // prints: http
trace(url.authority); // prints the host: localhost
trace(url.port); // prints: 7001
trace(url.path); // prints: /myPath
trace(url.query); // prints: myQuery=test
trace(url.fragment); // prints: myFragment

// build a new relative url, make sure we keep the query and fragment
var relativeURL : URI = new URI();
relativeURL.path = url.path;
relativeURL.query = url.query;
relativeURL.fragment = url.fragment;

var relativeURLString : String = relativeURL.toString();

// remove first / if any
if (relativeURLString.charAt(0) == "/") {
    relativeURLString = relativeURLString.substring(1, relativeURLString.length);
}

trace(relativeURLString); // prints: myPath?myQuery=test#myFragment

答案 5 :(得分:1)

这里所有其他正则表达式看起来有点复杂?这就是所需要的:(对吧?)

var originSlash = /^https?:\/\/[^/]+\//i;

theUrl.replace(originSlash, '');

答案 6 :(得分:1)

您可以使用浏览器解析URL的功能来代替正则表达式:

var parser = document.createElement('a');
parser.href = "http://localhost:7001/www.facebook.com";
var path = parser.pathname.substring(1); // --> results in 'www.facebook.com'

答案 7 :(得分:1)

您不需要任何库或REGEX

var url = new URL('http://localhost:7001/www.facebook.com')
console.log(url.pathname)

https://developer.mozilla.org/en-US/docs/Web/API/URL

问候

答案 8 :(得分:1)

正则表达式以匹配要删除的url部分,类似于:/^http[s]?:\/\/.+?\//

Java代码示例(请注意,在Java中,我们使用两个反斜杠“ \\”转义字符):

String urlWithBasePath = "http://localhost:7001/www.facebook.com";
String resultUrl = urlWithBasePath.replaceFirst("^http[s]?:\\/\\/.+?\\/", ""); // resultUrl => www.facebook.com

JS代码示例:

let urlWithBasePath = "http://localhost:7001/www.facebook.com";
let resultUrl = urlWithBasePath.replace(/^http[s]?:\/\/.+?\//, ''); // resultUrl => www.facebook.com

Python代码示例:

import re
urlWithBasePath = "http://localhost:7001/www.facebook.com"
resultUrl = re.sub(r'^http[s]?:\/\/.+?\/', '', urlWithBasePath) # resultUrl => www.facebook.com

示例或Ruby代码:

urlWithBasePath = "http://localhost:7001/www.facebook.com"
resultUrl =  urlWithBasePath = urlWithBasePath.sub(/^http[s]?:\/\/.+?\//, '') # resultUrl => www.facebook.com

PHP代码示例:

$urlWithBasePath = "http://localhost:7001/www.facebook.com";
$resultUrl = preg_replace('/^http[s]?:\/\/.+?\//', '', $urlWithBasePath); // resultUrl => www.facebook.com

C#代码示例(您还应指定using System.Text.RegularExpressions;):

string urlWithBasePath = "http://localhost:7001/www.facebook.com";
string resultUrl = Regex.Replace(urlWithBasePath, @"^http[s]?:\/\/.+?\/", ""); // resultUrl => www.facebook.com

答案 9 :(得分:-4)

只需使用replace

即可
"http://localhost:7001/www.facebook.com".replace("http://localhost:7001/",'')