我有一个字符串,可能包含多个网址链接(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后面的所有内容并检测字符串中的多个链接?
非常感谢你!
答案 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的其余部分。