返回

正则表达式教程:图片链接地址校验

正则表达式

一、正则解释

正则表达式:/^https?://(.+/)+.+(.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i

1. 语法解释

  • ^https?://(.+/)+ :匹配以 http 或 https 开头的 URL,后跟一个或多个目录层级(由 / 分隔)。
  • .+ :匹配 URL 中的文件名和扩展名。
  • (.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)) :匹配以下图片格式的扩展名:gif、png、jpg、jpeg、webp、svg、psd、bmp、tif。
  • $/i :行尾匹配,并启用不区分大小写的匹配。

2. 分解

部分
^ 行首匹配
https? 匹配 http 或 https
:// 匹配 "://"
(.+/) 匹配一个或多个目录层级
.+ 匹配文件名和扩展名
. 匹配句点(扩展名分隔符)
(gif png
$ 行尾匹配
i 不区分大小写匹配

二、使用场景

该正则表达式可用于:

  • 验证网站或应用程序中使用的图片链接地址是否有效。
  • 从文本或 HTML 代码中提取图片链接地址。
  • 确保上传到服务器或数据库中的文件具有支持的图片格式。

三、代码示例

JavaScript

const pattern = /^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i;
const result = pattern.test('https://www.abc.com/logo.png'); // true

Java

import java.util.regex.Pattern;

public class ImageLinkValidator {

    private static final Pattern PATTERN = Pattern.compile("^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i");

    public static boolean isValid(String link) {
        return PATTERN.matcher(link).matches();
    }

    public static void main(String[] args) {
        String link = "https://www.abc.com/logo.png";
        boolean result = isValid(link);
        System.out.println(result); // true
    }
}

PHP

<?php
$pattern = '/^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i';
$result = preg_match($pattern, 'https://www.abc.com/logo.png'); // 1
?>

Python

import re

pattern = re.compile(r'^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i')
result = pattern.match('https://www.abc.com/logo.png') is not None // True