regex 用于验证图像URL的正则表达式,该URL可能包含jpeg、jpg、gif、png等扩展名

u3r8eeie  于 2022-11-26  发布在  其他
关注(0)|答案(2)|浏览(301)

用于验证图像URL的正则表达式,该URL可能包含jpeg、jpg、gif、png等扩展名
我在用

  1. /\.(jpg|jpeg|png|gif|webp)(\?.*)*$/i

但对于https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=jpeg&qlt=80&.v=1603399121000它给出false
我期待一个正则表达式,它可以给予真,如果像jpg,jpeg,png,gif,webp的扩展名存在于url。

6g8kf2rb

6g8kf2rb1#

我不知道你想做什么,但这应该返回true

  1. var text = "https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=jpeg&qlt=80&.v=1603399121000";
  2. const regex = new RegExp(/(\W)(jpg|jpeg|png|gif|webp)(\W)/);
  3. console.log(regex.test(text));
dsf9zpds

dsf9zpds2#

您可以使用此正则表达式测试URL参数fmt=<format>

  • 第一个例子:fmt=jpeg位于中间
  • 第二个例子:结束时fmt=jpeg
  • 第三个例子:fmt=bmp(不支持的格式)
  1. const regex = /\bfmt=(jpg|jpeg|png|gif|webp)(?=(&|$))/;
  2. [
  3. 'https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=jpeg&qlt=80&.v=1603399121000',
  4. 'https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&qlt=80&.v=1603399121000&fmt=jpeg',
  5. 'https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=bmp&qlt=80&.v=1603399121000',
  6. ].forEach(url => {
  7. console.log(url + ' => ' + regex.test(url));
  8. });

输出量:

  1. https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=jpeg&qlt=80&.v=1603399121000 => true
  2. https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&qlt=80&.v=1603399121000&fmt=jpeg => true
  3. https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/macbook-air-gallery3-20201110?wid=4000&hei=3072&fmt=bmp&qlt=80&.v=1603399121000 => false

正则表达式说明:

  • \b-字边界
  • fmt=-文字fmt=参数(这是为了避免误报)
  • (jpg|jpeg|png|gif|webp)-支持的文件扩展名的逻辑“或”
  • (?=(&|$))-&或字符串结尾的正前瞻
展开查看全部

相关问题