【问题标题】:Regex for finding URLs inside text用于在文本中查找 URL 的正则表达式
【发布时间】:2014-01-30 00:03:05
【问题描述】:

我想使用 JavaScript 为文本中的 URL 找到防弹正则表达式(我正在用 <a> 标签替换 URL),我当前是正则表达式:

var url_re = /https?:\/\/(?:(?!&[^;]+;)[^\s:"'<>)])+/g;

它正在工作,但与端口不匹配的 url(如http://localhost:8080)。这个正则表达式会匹配所有的网址还是我也错过了什么?

var url_re = /https?:\/\/[^\/\s"'<>]+\/?(?:(?!&[^;]+;)[^\s:"'<>)])+/g;

或者也许有更短/更好的 url 正则表达式。

【问题讨论】:

  • 哦,正则表达式和通用 URL,这比看起来要难方式mathiasbynens.be/demo/url-regex
  • 你的第一个正则表达式:/https?:\/\/(?:(?!&amp;[^;]+;)[^\s:"'&lt;&gt;)])+/g 匹配 http://localhost:8080
  • 我在这里找到了一个应该可以工作的正则表达式。 stackoverflow.com/a/6322319
  • 看起来你对自己太苛刻了。 . .您不只是在寻找 URL,而是在寻找 有效 URL。简短而甜蜜的是使用var url_re = /https?:\/\/[^\s"']+/g;(或类似的东西,基于您期望的输入),并假设初始http(s)://之后的有效字符形成一个合法的URL。除非有充分的理由将 http://test.com 放在链接中并将 http://test,com 保留为常规文本,否则我认为您正在尝试解决的问题超出了您的需要。您到底想将此代码用于什么目的?
  • @anubhava 试试'asdasd http://localhost:8080 asdasd'.replace(url_re, function(url) { return '[' + url + ']'; })

标签: javascript regex url


【解决方案1】:

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

\bhttps?:\/\/(?:(?!&[^;]+;)[^\s"'<>)])+\b

在线演示:http://regex101.com/r/wT2rG9

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多