【问题标题】:jQuery Regex to return url [duplicate]jQuery正则表达式返回url [重复]
【发布时间】: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;
}

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

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

提前致谢。


编辑:

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

【问题讨论】:

  • 对不起,我懒得解决,你必须分解你的文本,并用你惊人的正则表达式检查每一行,因为正则表达式在文本中 \n\r 有一些问题
  • 我的错,我没有提到它应该只适用于图像。已编辑。

标签: jquery regex


【解决方案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); ` 但它给出了一个未捕获的语法错误:意外令牌非法。这是什么?谢谢。
  • 这个问题可能来自复制/粘贴:stackoverflow.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 StackOverflow Auto-Link Behavior

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

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

看到它in action

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 2021-03-16
    • 2023-04-06
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多