【问题标题】:Regular Expression to find URLs in block of Text (Javascript)正则表达式在文本块中查找 URL (Javascript)
【发布时间】:2009-11-18 14:51:49
【问题描述】:

我需要一个 Javascript 正则表达式来扫描纯文本块并返回带有 URL 作为链接的文本。

这就是我所拥有的:

findLinks:函数{ var hlink = /\s(ht|f)tp:\/\/([^ \,\;\:\!\)\(\"\'\\f\n\r\t\v])+ /G; return (s.replace(hlink, function($0, $1, $2) { s = $0.substring(1, $0.length); while (s.length > 0 && s.charAt(s.length - 1) == '.') s = s.substring(0, s.length - 1); 返回 '​​ ' + s + ''; })); }

问题是它只会匹配 http://www.google.com 而不是 google.com/adsense

我怎样才能做到这两点?

【问题讨论】:

    标签: javascript regex dom


    【解决方案1】:

    我一直使用这个作为参考。这家伙有 8 个你应该知道的正则表达式。

    http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/

    这是他用来查找 URL 的内容

    /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ 
    

    他还分解了每个部分的作用。对于学习正则表达式非常有用,而不仅仅是因为你不理解的原因而得到一个有效的答案。

    【讨论】:

    • 他的电子邮件正则表达式缺少有效字符,例如 @ 符号之前的 + 符号
    • 使用正则表达式验证电子邮件并非易事。我认为这更多是为了学习而不是在核心生产环境中使用。但是,URL 模式对我来说效果很好。显然,如果您的正则表达式风格不同,则需要进行调整。
    • 我爱你!该链接虽然不是 100% 的答案,但给了我一个很好的选择。
    • 以上链接已失效,现在可以在:code.tutsplus.com/tutorials/…
    【解决方案2】:

    这是一项不平凡的任务。要匹配根据相关 RFC 有效的任何 URI,您需要一个非常复杂的正则表达式,即使这样也不会过滤掉具有无效顶级域的 URI(例如http://brussels.sprout/)。所以,你必须妥协。确定什么对您很重要(例如:误报或误报更容易接受吗?您是否希望将顶级域限制为仅当前存在的域?您是否允许在匹配的 URI 中使用非拉丁字符?)您应该决定您的需要你用正则表达式来做相应的设计,而不是盲目地从网上复制粘贴一个例子。

    【讨论】:

      【解决方案3】:

      您可以将协议部分设为可选:

      /\s((ht|f)tp:\/\/)?([^ \,\;\:\!\)\(\"\'\\f\n\r\t\v])+/g

      【讨论】:

        【解决方案4】:

        试试这个(适用于您的示例文本)

        \S+\.\S+
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-24
          • 2014-01-30
          • 1970-01-01
          • 2016-12-31
          • 1970-01-01
          • 1970-01-01
          • 2016-06-27
          • 1970-01-01
          相关资源
          最近更新 更多