-2

我在使用 javascript 正则表达式将 url 链接到可点击链接时遇到了一个奇怪的问题。

在 so.com 上进行了大量挖掘之后,我开始使用jmrware/LinkifyURL.js将 url 转换为可点击的链接。但是当尝试在没有架构的情况下转换 url ((htt|ft)ps) 时,它根本无法识别 url。

例子:

http://www.google.com(接受)
www.google.com(不接受)
google.com(不接受)。

那里的任何人都可以帮我找出解决方案。

编辑:在我的场景中,我必须在用户可以输入任何 url 的文本区域中接受用户的输入。在网站上显示时,我必须链接在用户输入中找到的任何 url。

这是我试图链接的测试内容。

> http://example.com:80                                            (linkified)<br/>
> http://example.com:80/path/                                      (linkified)<br/>
> http://example.com:80/path/file.txt                              (linkified)<br/>
> http://example.com:80/path/file.txt?query=val&var2=val2          (linkified)<br/>
> http://example.com:80/path/file.txt?query=val&var2=val2#fragment (linkified)<br/>
> http://example.com/(file's_name.txt)                             (linkified)<br/>
> http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7348]                 (linkified)<br/>
> http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7348]/file.txt        (linkified)<br/>
> http://youtube.com:80/path/file.txt?query=val&var2=val2          (linkified)<br/>
> www.example.me                                                   (not linkified)<br/>
> example.me                                                       (not linkified)<br/>

在上面的代码中,最后两个字符串没有链接我想要的链接。我在 JavaScript RegExp 中尝试了消极的向后看,即使这样也没有运气。

((?!(http|ftp|https|ftps)://)^[a-z0-9-]+(.[a-z0-9-]+)+([/?].*)?) - 消极的回顾

我是so.com的新手,如果我的问题不清楚,请原谅。

4

2 回答 2

1

我是相关链接项目的作者。按照设计,该linkify()函数仅匹配具有方案元素的 URL。如果没有这个限制,就会有太多的误报。(几乎任何字符串或子字符串都是有效的 URI。)

于 2012-10-28T16:16:48.850 回答
0

添加此行以确保url字符串是链接:

url = url.replace(/^(?!(?:http|https|ftp):\/\/)/i, 'http://');
于 2012-08-27T13:21:22.240 回答