爆炸字符串的功能?

时间:2011-09-14 22:42:54

标签: javascript regex

使用我当前的功能:

http://piza.com/something返回pizza.com

如何更改它以便它不会删除/之后的内容,但会不断删除http,https和www?

E.G: http://piza.com/something/1应该返回pizza.com/something/1

function cleanUrl(url) { 
    return url.replace(/^(http(s)?:\/\/)?(www\.)?([^\/]+)(\/.*)?$/gi,"$4");
}

6 个答案:

答案 0 :(得分:2)

在你问之前先试试。关于stackoverflow的许多正则表达式问题基本上都是“写我的正则表达式”。

无论如何,这样的事情应该有效(未经测试):

function cleanUrl(url) { 
    return url.replace(/^(http(s)?:\/\/)?(www\.)?/gi,"");
}

答案 1 :(得分:1)

这是可行的。

return url.replace(/(http(s)?:\/\/)?(www\.)?/gi,"");

答案 2 :(得分:0)

if (url.indexOf('http://') == 0) url = url.substr(7);
else if (url.indexOf('https://') == 0) url = url.substr(8);
if (url.indexOf('www.') == 0) url = url.substr(4);
return url;

答案 3 :(得分:0)

return url.replace(/^(https?:\/\/)?(www\.)?/, '');

答案 4 :(得分:0)

您可以使用此正则表达式替换:

var url = "http://piza.com/something/1";
var output = url.replace(/^http(s)?:\/\/(www\.)?/, "");

解释正则表达式:

^http - string starts with "http"
(s)?  - followed by an optional "s" in "https"
:\/\/ - followed by "://"
(www\.) - followed an an optional "www."

然后,用零替换你找到的匹配的任何部分,只留下URL的其余部分。

答案 5 :(得分:0)

我还会补充过多的答案(因为我已经解决了)。

对原始脚本的一个小修改将起作用:

^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$

所以你有

function cleanUrl(url) { 
    return url.replace(/^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$/gi,"$4");
}

这里的主要区别是我在www检查之后更改了部分以将正则表达式的其余部分捕获为一个组。这完全是关于团体的。

原始字符串/正则表达式组合^(http(s)?:\/\/)?(www\.)?([^\/]+)(\/.*)?$返回了以下组:

  • 0。 http://piza.com/something/1
  • 1。 HTTP://
  • 2。未定义
  • 3。未定义
  • 4。 pizza.com
  • 5。 /东西/ 1

  • 修订后的字符串/正则表达式组合^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$返回:

  • 0。 http://piza.com/something/1
  • 1。 HTTP://
  • 2。未定义
  • 3。未定义
  • 4。 pizza.com/something/1
  • 5。 pizza.com
  • 6。 /东西/ 1

  • 任何时候你有一个括号对你创建一个组。在你的情况下,你想要一个在www部分之后捕获所有内容的组,这就是我创建一个新组以捕获其他所有内容的地方。

    顺便说一句,你可以轻松地在线试用这些正则表达式。我使用JavaScript RegExp Example: Regular Expression Tester并点击“显示匹配”按钮,查看您的群组返回的内容。