从javascript字符串中删除http或https

Mat*_*iby 14 javascript

我有以下字符串

http://example.com
https://example.com
http://www.example.com
Run Code Online (Sandbox Code Playgroud)

我怎么摆脱http://https://

nca*_*eli 35

试试这个:

var url = "https://site.com";
var urlNoProtocol = url.replace(/^https?\:\/\//i, "");
Run Code Online (Sandbox Code Playgroud)

  • 它适用于http和https."s"字符是可选的. (8认同)
  • The escape before the colon is unnecessary. `url.replace(/^https?:\/\//i, "")` is equivalent. (3认同)

Vin*_*our 21

您可以像这样使用URL对象:

const urlWithoutProtocol = new URL(url).host;

  • 我建议人们大力支持这个答案,新的 URL 对象功能是现在处理许多 URL 情况的方法。 (4认同)

Gre*_*een 7

您可以使用URL() 构造函数。它将解析您的 url 字符串,并且将有一个不带协议的条目。所以使用正则表达式可以减少一些头痛:

let u = new URL('https://www.facebook.com/companypage/');
URL {
    hash: ""
    host: "www.facebook.com"
    hostname: "www.facebook.com"
    href: "https://www.facebook.com/companypage/"
    origin: "https://www.facebook.com"
    password: ""
    pathname: "/companypage/"
    port: ""
    protocol: "https:"
    search: ""
    searchParams: URLSearchParams {}
    username: ""
}
u.host // www.facebook.com
u.hostname // www.facebook.com
Run Code Online (Sandbox Code Playgroud)

虽然URL()放弃了一项协议,但它给你留下了www一部分。就我而言,我也想摆脱该子域部分,所以.replace()无论如何都必须使用。

u.host.replace(/^www./, '') // www.facebook.com => facebook.com
Run Code Online (Sandbox Code Playgroud)