4

可能重复:
匹配 URL 的好的正则表达式是什么?

我有一个从服务器发送的字符串,如下所示:

“嘿,看看这里的这张照片http://example.com/fantastic.jpg,是不是很好看?”

我想要一个执行以下操作的正则表达式函数:

function returnUrl(text) {
    regex here ...
    return url;
}

我对正则表达式真的很不好,所以我来这里寻求帮助。请看下面的图片以了解我的意思:

stackOverflow 自动 url 识别

这是 stackOverflow 自动更改我在可点击 URL 中插入的文本,我想它是 jQuery / regex。

提前致谢。


编辑:

忘了提一下,这个正则表达式应该只适用于图像(jpg、png 等)而不适用于所有链接。

4

3 回答 3

1

一个简单的将是:

https?://[\w-\.\?\#\/]+

一个完整的(我使用的)将是:

[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?

而最后一个oe恰恰来自于什么是一个好的正则表达式来匹配一个URL?

编辑

一个简单的直接图片链接(见这里

https?://[\w-\.\/]+(\.jpg|\.jpeg|\.png|\.bmp)
于 2012-08-28T08:39:17.270 回答
1

你可以这样使用:

function returnUrl(text) {
     var reg = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
     var url = text.match(reg).toString();
     return url;
}

这是演示:http: //jsfiddle.net/4vBLH/

于 2012-08-28T08:41:45.200 回答
0

你应该看看如何模仿 StackOverflow 自动链接行为

来自 RegexBuddy 库的 URL 正则表达式(用作不区分大小写):

\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]

看到它在行动

于 2012-08-28T08:45:03.560 回答