如何使用正則表示式驗證影像副檔名?
介紹
在本文中,我們檢查如何使用正則表示式驗證影像副檔名。本文中的影像副檔名是指包含檔名和副檔名的有效影像副檔名。有效的影像副檔名遵循我們在本文中定義的一些規則。
正則表示式或正則表示式用於字串中的模式匹配或字串搜尋演算法。其功能在 <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) = 它是有效影像副檔名的組。豎線 (|) 充當 OR 運算子,在不同的影像副檔名之間提供選擇。
$ = 它表示字串的結尾。
示例 1
我們在 C++ 中實現了查詢有效輸入影像副檔名的任務。透過生成包含所有有效影像檔案規則的 match_pattern 來使用正則表示式。
#include <iostream>
#include <regex>
#include <string>
using namespace std;
//user-defined function to determine the validity of the input string using regular expression
bool isImageFileValid(const string& filename) {
// Regular expression for a valid image file. It satisfy all the conditions of a valid image file
regex imageRegex("^[^\s]+\.(jpg|jpeg|png|gif|bmp)$", regex_constants::icase);
// Match the image file extension against the regular expression
return regex_match(filename, imageRegex);
}
//code controller
int main() {
// Predefined image file name
string filename = "abc.ppt";
//conditional statement to determine the result via calling the function
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;
// user-defined function to verify the string
bool validImageFile(string strVar){
// Regular expression containing all conditions for a valid image file extension
const regex matchPattern("[^\s]+(.*?)\.(jpeg|jpg|png|gif|JPEG|JPG|GIF|PNG)$");
// If the string is empty
if (strVar.empty()) {
return false;
}
// conditional statement that returns true when a string is a valid image file extension
if(regex_match(strVar, matchPattern)) {
return true;
} else {
return false;
}
}
// Code controller
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
結論
我們已經完成了本教程,在本教程中,我們檢查輸入字串是否為有效的影像副檔名。我們使用正則表示式來檢查字串的有效性。根據有效影像副檔名的條件,我們聲明瞭一個正則表示式並將其與輸入字串匹配。使用條件語句確定結果。用一些示例演示了問題陳述,以確定任務的需求。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP