【问题标题】:How to remove URL from a string completely in Javascript?如何在 Javascript 中完全从字符串中删除 URL?
【发布时间】:2015-08-26 13:57:31
【问题描述】:

我有一个可能包含多个 url 链接(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 后面的所有内容并检测字符串中的多个链接?

非常感谢!

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你可以使用这个正则表达式:

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

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

    【讨论】:

    • 您能否通过将其转换为多行正则表达式并解释每行的作用来改进您的答案?
    • @anubhava 从技术上讲不是因为\S 不包括\n 你最好使用。 [\S\n]如果你想匹配多行
    • 这是错误的,因为它无法删除类似 www.domain.com 的内容
    • URL 必须以 http://https://ftp:// 开头,否则此正则表达式不会将任何其他内容视为 URL
    【解决方案2】:

    您是否搜索过 url 解析器正则表达式?这个问题有几个综合答案Getting parts of a URL (Regex)

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2021-11-06
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多