jQuery正则表达式返回url [重复]

Posted

技术标签:

【中文标题】jQuery正则表达式返回url [重复]【英文标题】:jQuery Regex to return url [duplicate] 【发布时间】:2012-08-22 17:40:28 【问题描述】:

可能重复:What is a good regular expression to match a URL?

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

“嘿,看看这张照片http://example.com/fantastic.jpg,好看吗?”

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

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

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

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

提前致谢。


编辑:

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

【问题讨论】:

google.at/?q=javascript+regex+url 对不起,我懒得解决,你必须分解你的文本,并用你惊人的正则表达式检查每一行,因为正则表达式在文本中 \n\r 有一些问题 我的错,我没有提到它应该只适用于图像。已编辑。 【参考方案1】:

一个简单的:

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

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

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

而最后一个oe正好来自What is a good regular expression to match a URL?

编辑

一个简单的直接图片链接 (see here)

https?://[\w-\.\/]+(\.jpg|\.jpeg|\.png|\.bmp)

【讨论】:

哎呀,我的错。请看一下编辑。对此感到抱歉。 最后一个很容易为你修改。我同意,这不是最完整的。 好吧,在服务器端进行一些验证,它会像魅力一样工作!谢谢! 其实这个正则表达式有问题,我用的是`var imageUrl = url.match(/https?://[\w-\.\/]+(\.jpg| \.jpeg|\.png|\.bmp)/g); ` 但它给出了一个未捕获的语法错误:意外令牌非法。这是什么?谢谢。 这个问题可能来自复制/粘贴:***.com/questions/5733275/… 尝试手动重写。【参考方案2】:

你可以这样使用:

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/

【讨论】:

检查编辑。对此感到抱歉【参考方案3】:

你应该看看How to mimic *** Auto-Link Behavior。

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

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

看到它in action

【讨论】:

以上是关于jQuery正则表达式返回url [重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 重复捕获组

使用正则表达式的 jQuery Youtube URL 验证

jquery.find()无法识别的正则表达式[重复]

如何通过正则表达式检测内容中的任何 URL [重复]

使用正则表达式在 JS 中验证 url [重复]

URL 字符串的正则表达式模式 [重复]