使用我当前的功能:
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");
}
答案 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\.)?([^\/]+)(\/.*)?$
返回了以下组:
修订后的字符串/正则表达式组合^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$
返回:
任何时候你有一个括号对你创建一个组。在你的情况下,你想要一个在www部分之后捕获所有内容的组,这就是我创建一个新组以捕获其他所有内容的地方。
顺便说一句,你可以轻松地在线试用这些正则表达式。我使用JavaScript RegExp Example: Regular Expression Tester并点击“显示匹配”按钮,查看您的群组返回的内容。