javascript正则表达式来查找字符串中的图像网址

斯科特·布朗

我正在使用Javascript regEx来解析数据库字段以获取图像URL并将其格式化以进行输出-到目前为止,我一直在使用

input = input.replace(/(https?:\/\/.*?\.(?:png|jpe?g|gif)(.*))(\w|$)/ig, "<br><img style='max-width:100%;overflow:hidden;' src='$1'>");

它一直在为我服务。所有的png,jpe?g和gif引用均被IMG标签替换,并且图像按预期显示在输出流中。

但是,我陷入了循环。

我注意到有些网址(特别是来自Facebook CDN的网址-尽管我认为其他人也可以这样做)在图像类型之后附加了一大堆“内容” ...如果没有的话,这些内容会在文件中产生无法使用,则会生成缺少的图像图标。例如,这是来自fbcdn.net的有效图片网址:

https://scontent-lga1-1.xx.fbcdn.net/hphotos-xtf1/v/t1.0-9/11147160_10156300867440377_5455334309678688318_n.jpg?oh=916e68ac2c908bbe15961825c373d6bc&oe=5606B6F4

有人可以建议对regEx进行更改/改进,以获取多余的尾随字符吗?还是有必要采取另一种攻击方法

(我个人喜欢全局regEx,因为我可以一次钉住流中的所有实例……我不希望手动解析流)。

更新:我知道请求中存在一些歧义-希望可以澄清这一点。

我需要提取任何图像网址-不管图像扩展后的“内容”如何。它可以是文本字符串中的第一个项目,也可以是最后一个项目,或者可以嵌入在中间的某个位置。

处理是用Javascript完成的。我目前正在使用它作为我的有效性测试。其中的所有图片都是从Google图片搜索中提取的有效网址。

http://well-being.esdc.gc.ca/misme-iowb/auto/diagramme-chart/stg2/c_4_21_6_1_eng.png?20150508104424447 This is arbitrary text https://scontent-lga1-1.xx.fbcdn.net/hphotos-xtf1/v/t1.0-9/11147160_10156300867440377_5455334309678688318_n.jpg?oh=916e68ac2c908bbe15961825c373d6bc&oe=5606B6F4 this is arbitrary text

http://lh6.ggpht.com/-1Rua79J-EDo/TwuyZkHwcmI/AAAAAAAADvA/ENfg1TeayvU/type_catalog_error_thumb%25255B1%25255D.jpg?imgmax=800 this is arbitrary text http://image.slidesharecdn.com/top5thingstodoafteranaccident-140826163850-phpapp02/95/top-five-things-to-do-after-any-type-of-accident-causing-injury-1-638.jpg?cb=1409089267

希望这可以为我可能遇到的各种变化类型提供足够的信息(我唯一可以确定的就是FBCDN-我将基于其他我所看到的知识,以此作为基础...因此,一个广义的解决方案是而非FBCDN专用)。

感谢所有提供建议的人...

约翰尼·斯科瓦尔(Johny Skovdal)

在OP用更多示例输入进行更新之后进行了更新。

您的尝试存在三个问题:比赛的边界,使用'。*'和缺少合法后缀的模式。

在RegEx中,点星符号是个坏主意,在文章“ Death to Dot Star! ”中可以很好地说明这一点。取而代之的是使用否定的字符类,在这里我选择了“ \ S *?”。这是“不是空格的任何字符”。如果您尝试将其替换为“。*?” 而是在regex101上,您可以看到它无法正确匹配(它包含不是图像的链接)。

由于它们都在同一字符串中,因此必须为匹配定义边界,并且由于空格足够,“ \ b”可以很好地解决问题。这也消除了对“(。*)”和“(\ w | $)”部分的需要。

您遗漏的最后一件事是url的合法结尾,并且有两种解决方案:定义您认为合理的内容以包含大多数情况并且没有误报,或者包含任何其他内容但有可能获得太多结果的可能性。

将所有内容包装在一起,您将得到以下两种不同的方法:

解决方案1-定义正确的

\b(https?:\/\/\S*?\.(?:png|jpe?g|gif)
  # allowed postfixes to the filetype
  (?:\?(?:
    # alphnumeric key/value pairs
    (?:(?:[\w_-]+=[\w_-]+)(?:&[\w_-]+=[\w_-]+)*)|
    # alphnumeric postfix
    (?:[\w_-]+)
  ))?
)\b

regex101试用

解决方案2-使用空格作为唯一因素

\b(https?:\/\/\S+(?:png|jpe?g|gif)\S*)\b

regex101试用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javascript正则表达式来查找字符串中的图像网址

来自分类Dev

Golang正则表达式以查找字符串中的网址

来自分类Dev

正则表达式在javascript中查找字符串

来自分类Dev

preg_match_all-正则表达式,用于查找字符串中的完整网址

来自分类Dev

正则表达式:在不同的字符串变体中查找字符串

来自分类Dev

为什么条件使用正则表达式返回 True 来查找字符串中的特殊字符?

来自分类Dev

使用正则表达式查找字符串中的确切字符

来自分类Dev

正则表达式查找字符串中不同字符的位置

来自分类Dev

Python正则表达式:在字符串中查找字符序列

来自分类Dev

如何在JavaScript中使用正则表达式查找字符串?

来自分类Dev

正则表达式在Python 3中的列表中查找字符串

来自分类Dev

Java中的正则表达式查找字符串中的冒号

来自分类Dev

正则表达式-查找字符串中的所有匹配项

来自分类Dev

正则表达式查找字符串中的数字

来自分类Dev

使用正则表达式查找字符串中的所有链接

来自分类Dev

使用正则表达式查找字符串中的所有匹配项

来自分类Dev

在R中,如何使用正则表达式查找字符串的PATTERN?

来自分类Dev

八度-使用正则表达式查找字符串中的单词

来自分类Dev

python正则表达式从多行大括号中查找字符串

来自分类Dev

正则表达式:查找字符串中的重复项

来自分类Dev

正则表达式用于查找字符串中的日期

来自分类Dev

用正则表达式查找字符串中的所有字母

来自分类Dev

python使用正则表达式查找字符串中的字母

来自分类Dev

正则表达式查找字符串中不匹配的整数

来自分类Dev

在Python语法中查找字符串前缀的正则表达式

来自分类Dev

正则表达式问题-查找字符串中的数字

来自分类Dev

PHP:使用正则表达式查找字符串中的数组模式

来自分类Dev

八度-使用正则表达式查找字符串中的单词

来自分类Dev

PHP正则表达式查找字符串中的单词

Related 相关文章

  1. 1

    javascript正则表达式来查找字符串中的图像网址

  2. 2

    Golang正则表达式以查找字符串中的网址

  3. 3

    正则表达式在javascript中查找字符串

  4. 4

    preg_match_all-正则表达式,用于查找字符串中的完整网址

  5. 5

    正则表达式:在不同的字符串变体中查找字符串

  6. 6

    为什么条件使用正则表达式返回 True 来查找字符串中的特殊字符?

  7. 7

    使用正则表达式查找字符串中的确切字符

  8. 8

    正则表达式查找字符串中不同字符的位置

  9. 9

    Python正则表达式:在字符串中查找字符序列

  10. 10

    如何在JavaScript中使用正则表达式查找字符串?

  11. 11

    正则表达式在Python 3中的列表中查找字符串

  12. 12

    Java中的正则表达式查找字符串中的冒号

  13. 13

    正则表达式-查找字符串中的所有匹配项

  14. 14

    正则表达式查找字符串中的数字

  15. 15

    使用正则表达式查找字符串中的所有链接

  16. 16

    使用正则表达式查找字符串中的所有匹配项

  17. 17

    在R中,如何使用正则表达式查找字符串的PATTERN?

  18. 18

    八度-使用正则表达式查找字符串中的单词

  19. 19

    python正则表达式从多行大括号中查找字符串

  20. 20

    正则表达式:查找字符串中的重复项

  21. 21

    正则表达式用于查找字符串中的日期

  22. 22

    用正则表达式查找字符串中的所有字母

  23. 23

    python使用正则表达式查找字符串中的字母

  24. 24

    正则表达式查找字符串中不匹配的整数

  25. 25

    在Python语法中查找字符串前缀的正则表达式

  26. 26

    正则表达式问题-查找字符串中的数字

  27. 27

    PHP:使用正则表达式查找字符串中的数组模式

  28. 28

    八度-使用正则表达式查找字符串中的单词

  29. 29

    PHP正则表达式查找字符串中的单词

热门标签

归档