如何在Javascript中完全删除字符串中的URL?

时间:2014-05-09 17:49:36

标签: javascript regex

我有一个字符串,可能包含多个网址链接(http或https)。我需要一个脚本,它将完全从字符串中删除所有这些URL,并在没有它们的情况下返回相同的字符串。

我到目前为止尝试过:

 var url = "and I said http://fdsadfs.com/dasfsdadf/afsdasf.html";
 var protomatch = /(https?|ftp):\/\//; // NB: not '.*'
 var b = url.replace(protomatch, '');
 console.log(b);

但这只会删除http部分并保留链接。

如何编写正确的正则表达式,它将删除http后面的所有内容并检测字符串中的多个链接?

非常感谢你!

2 个答案:

答案 0 :(得分:23)

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

var b = url.replace(/(?:https?|ftp):\/\/[\n\S]+/g, '');
//=> and I said 

此正则表达式匹配并删除以http://https://ftp://开头且与下一个空格字符或输入结尾匹配的任何网址。 [\n\S]+也会匹配多行。

答案 1 :(得分:1)

您是否搜索过网址解析器正则表达式?这个问题有一些全面的答案Getting parts of a URL (Regex)

那就是说,如果你想要更简单的东西(也许不是那么完美),你应该记住捕获整个url字符串而不仅仅是协议。

喜欢的东西 /(https?|ftp):\/\/[\.[a-zA-Z0-9\/\-]+/ 应该工作得更好。请注意,添加的一半会在协议之后解析URL的其余部分。