【问题标题】:Javascript function that gets a string with URLs [duplicate]获取带有 URL 的字符串的 Javascript 函数 [重复]
【发布时间】:2012-08-20 11:22:51
【问题描述】:

我有一个接收字符串的 Javascript 函数。 该字符串中可能包含 URL,有或没有 http:// 或 http/s:

示例字符串:

This is an example string with www.cnn.com and http://microsoft.com"

我的目的是获取该字符串并为 URL 注入锚标记,以便在将它们作为 HTML 注入 html 文档时可点击。

有什么我可以使用的吗?一些 Jquery 函数?

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    没有原生的 jQuery 函数,但是正则表达式可以做到这一点

    让我给你指点this blog post,这会让你开始。它有一个正则表达式(可能看起来相当复杂和复杂,但并没有那么多),它可以检测字符串中的链接和电子邮件,因此您将能够找到它们并将它们替换为指向提取的 URL 的链接。

    也许更好的表达方式(我知道我过去使用过)是published by Stackoverflow's own Jeff Atwood。他还非常详细地描述了整个 URL 情况,因此您可以决定这是否适用于您的问题以及适用程度。

    【讨论】:

    • 是的。那成功了。我不是网络开发人员,以前从未使用过 Javascript。我使用 QWebView (Qt webKit) 我迫切需要完成类似的事情。感谢您的帮助。
    【解决方案2】:

    如果仍然需要正则表达式:

    /((www|http:\/\/)\S*)/ig
    


    这与以下示例中的 www.cnn.comhttp://www.microsoft.com 匹配:

    This is an example string with www.cnn.com and http://www.microsoft.com
    

    如果你使用<a href="$1">$1</a> 替换你会得到:

    <a href="www.cnn.com">www.cnn.com</a>
    <a href="http://www.microsoft.com">http://www.microsoft.com</a>
    


    请记住,此正则表达式不会验证 url 地址。它只搜索wwwhttp://,然后获取之后的所有内容,直到出现空格

    【讨论】:

    • 这不太好,因为以这个字符串为例,它会生成无效链接:Find it on my blog (http://somewhere.com).。然后这将捕获右括号和点......这是不受欢迎的。如果没有空白怎么办?如果链接是字符串中的最后一件事怎么办?事情通常并不像看起来那么简单。
    • @RobertKoritnik 我从来没有说过这有什么好处,已经有很多骗子了。我只是想解释如何去做这件事。我什至最后声明它不验证 URL。
    • 你是对的。但我的示例与 URL 验证无关。我的示例只是表明它没有正确提取 URL,因为在某些情况下它提取了太多不再是 URL 的一部分。
    • @RobertKoritnik 确实如此,URL 可以以 ton 的不同字符结尾。如果您想要更好的匹配,请使用:(\b(https?|ftp|file):\/\/[-A-Z0-9+&amp;@#\/%?=~_|!:,.;]*[-A-Z0-9+&amp;@#\/%=~_|]),即使这也不是 100%。 Read more here
    猜你喜欢
    • 2021-03-25
    • 2015-07-02
    • 2016-01-17
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多