如何使用正则表达式验证图像文件扩展名?

data structurec++server side programmingprogramming

简介

在本文中,我们将使用正则表达式验证图像文件扩展名。本文中的"图像文件扩展名"是指由文件名和文件扩展名组成的有效图像文件扩展名。有效的图像文件扩展名遵循我们在本文中定义的一些规则。

正则表达式或 regex 用于字符串或字符串搜索算法中的模式匹配。其功能定义在 <regex> 头文件中。它与 regex 关键字后跟一个变量一起使用。在本 C++ 教程中,我们将使用正则表达式检查输入字符串是否为有效的图像文件扩展名。我们考虑一个输入字符串,并通过匹配图像文件扩展名命名规则来检查其有效性。为了验证图像文件扩展名,我们使用正则表达式进行模式匹配。

语法

regex regular_expression_patternname
return regex_match(value, regular_expression_patternname);

有效图像文件扩展名的规则如下:

  • 图像文件至少应以一个字符开头。

  • 图像文件不能为空。

  • 图像文件扩展名后跟一个点和文件扩展名。例如,abc.jpg

  • 图像文件的名称中没有空格。

  • 可接受的图像文件扩展名包括 .jpg、.gif、.jpeg、.bmp 和 .png。

演示 1

Input = Filename = "cdf.jpeg"
Output = The input name is a valid file name.。

说明

上述字符串符合有效图像文件的所有规则。因此,它是一个有效的图像文件扩展名。

演示 2

Input = Filename = "6fg.jpfg"
Output = No, it is not a valid image file.

说明

根据图像文件规则,上述输入字符串为无效图像文件。有效的图像文件扩展名不包含 jpfg 扩展名。

因此,它是一个无效的图像文件。

算法

  • 输入一个图像文件字符串。

  • 定义一个包含有效文件扩展名所有规则的正则表达式。

  • 定义正则表达式后,迭代输入字符串的所有字符。

  • 将输入字符串的每个字符与正则表达式模式匹配。

  • 使用条件语句确定结果。

  • 打印输出。

正则表达式的语法

正则表达式如下 -

^[^\s]+\.(jpg|jpeg|png|gif|bmp)$

这里,

  • ^ = 表示字符串的开头。

  • [^\s]= 表示字符串应以某个字符开头。^ 为否定字符类。//s 表示无空格。

  • + = 表示字符串可以包含多个字母。

  • \. = 反斜杠 (\) 用于赋予点 (.) 含义,因为此处点仅被视为一个点。

  • (jpg|jpeg|png|gif|bmp) = 一组有效的图像文件扩展名。竖线 (|) 用作"或"运算符,用于在不同的图像文件扩展名之间进行选择。

  • $ = 表示字符串的结尾。

示例 1

我们用 C++ 实现了查找有效输入图像文件扩展名的任务。使用正则表达式,生成一个包含有效图像文件所有规则的 match_pattern。

#include <iostream>
#include <regex>
#include <string>
using namespace std;

//用户定义函数,使用正则表达式判断输入字符串的有效性
bool isImageFileValid(const string& filename) {
    // 判断图像文件是否有效的正则表达式。它满足所有有效图像文件的条件。
    regex imageRegex("^[^\s]+\.(jpg|jpeg|png|gif|bmp)$", regex_constants::icase);
    
    // 将图像文件扩展名与正则表达式匹配。
    return regex_match(filename, imageRegex);
}

//代码控制器
int main() {
    //预定义图像文件名
    string filename = "abc.ppt";
    
    //通过调用函数判断结果的条件语句
   if (isImageFileValid(filename)) {
      cout << "Valid image file!" << endl;
   } else {
      cout << "Invalid image file extension or filename format!" << endl;
   }

   return 0;
}

输出

Invalid image file extension or filename format!

示例 2

我们使用 C++ 中的正则表达式实现了检查输入字符串是否为有效图像文件的任务。使用了不同的输入字符串,并利用了一个包含有效图像文件所有条件的正则表达式。

#include <iostream>
#include <regex>
using namespace std;

// 用户定义函数来验证字符串
bool validImageFile(string strVar){ 

    // 包含所有有效图像文件扩展名条件的正则表达式
    const regex matchPattern([^\s]+(.*?)\.(jpeg|jpg|png|gif|JPEG|JPG|GIF|PNG)$");
    
    // 如果字符串为空
    if (strVar.empty()) {
        return false;
    }
    
    // 当字符串为有效图像文件扩展名时返回 true 的条件语句
   if(regex_match(strVar, matchPattern)) {
      return true;
   } else {
      return false;
   }
}

// 代码控制器
int main(){
   string strVar1 = "1de.jpeg";
   cout << validImageFile(strVar1) << endl;
   string strVar2 = "cgd.jpg";
   cout << validImageFile(strVar2) << endl;
   string strVar3 = "cfg.pnfg";
   cout << validImageFile(strVar3) << endl;
   string strVar4 = ".jpg";
   cout << validImageFile(strVar4) << endl;
   string strVar5 = "a b.jpg";
   cout << validImageFile(strVar5) << endl;
   return 0;
}

输出

1
1
0
0
1

结论

本教程已结束,我们检查输入字符串是否为有效的图像文件扩展名。我们使用正则表达式来检查字符串的有效性。根据有效图像文件扩展名的条件,我们声明了一个正则表达式并将其与输入字符串进行匹配。使用条件语句来确定结果。我们通过一些示例演示了问题陈述,以确定任务的需求。


相关文章