Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中完全删除字符串中的URL?_Javascript_Regex - Fatal编程技术网

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

如何在Javascript中完全删除字符串中的URL?,javascript,regex,Javascript,Regex,我有一个字符串,可能包含几个url链接(http或https)。我需要一个脚本,将删除所有这些网址从字符串完全和返回相同的字符串没有他们 到目前为止,我试过: var url = "and I said http://fdsadfs.com/dasfsdadf/afsdasf.html"; var protomatch = /(https?|ftp):\/\//; // NB: not '.*' var b = url.replace(protomatch, ''); console.l

我有一个字符串,可能包含几个url链接(http或https)。我需要一个脚本,将删除所有这些网址从字符串完全和返回相同的字符串没有他们

到目前为止,我试过:

 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后面的所有内容,并检测字符串中的多个链接


非常感谢你

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

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

此正则表达式匹配并删除以
http://
https://
ftp://
开头并匹配到下一个空格字符或输入结尾的任何URL<代码>[\n\S]+也将跨多行匹配。

是否搜索url解析器正则表达式?这个问题有几个全面的答案

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

差不多

/(https?| ftp):\/\/[\.[a-zA-Z0-9\/\-]+/

应该更好。请注意,添加的一半解析协议之后的URL的其余部分。

您可以通过将其转换为多行正则表达式并解释每行的作用来改进您的答案吗?@anubhava技术上并不是因为
\S
排除
\n
您更适合使用。
[\S\n]如果你想匹配多行,它是错误的,因为它不能删除一些像www. Dima.Cururl必须从<代码> http://< /COD>或<代码> http://或 FTP:// >否则此正则表达式不考虑任何其他URL。