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

图像文件扩展名正则表达式模式

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

描述

(			#Start of the group #1
 [^\s]+			#  must contains one or more anything (except white space)
       (		#    start of the group #2
         \.		#	follow by a dot "."
         (?i)		#	ignore the case sensive checking for the following characters
             (		#	  start of the group #3
              jpg	#	    contains characters "jpg"
              |		#	    ..or
              png	#	    contains characters "png"
              |		#	    ..or
              gif	#	    contains characters "gif"
              |		#	    ..or
              bmp	#	    contains characters "bmp"
             )		#	  end of the group #3
       )		#     end of the group #2	
  $			#  end of the string
)			#end of the group #1

整个组合是指,必须具有1个或多个字符串(但不能有空格),后跟点“。”。 字符串以“ jpg”或“ png”或“ gif”或“ bmp”结尾,而且expand的文件不区分大小写。

此正则表达式模式广泛用于不同文件的广泛检查。 您只需更改结束组合(jpg | png | gif | bmp)即可进行不同的文件扩展名检查,以适应您的需要。

Java正则表达式示例

package com.mkyong.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class ImageValidator{
	
   private Pattern pattern;
   private Matcher matcher;
 
   private static final String IMAGE_PATTERN = 
                "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";
	        
   public ImageValidator(){
	  pattern = Pattern.compile(IMAGE_PATTERN);
   }
	  
   /**
   * Validate image with regular expression
   * @param image image for validation
   * @return true valid image, false invalid image
   */
   public boolean validate(final String image){
		  
	  matcher = pattern.matcher(image);
	  return matcher.matches();
	    	    
   }
}

符合以下条件的图片文件:

1.“ a.jpg”,“ a.gif”,“ a.png”,“ a.bmp”,
2.“ ..jpg”,“ .. gif”,“ .. png”,“ .. bmp”,
3.“ a.JPG”,“ a.GIF”,“ a.PNG”,“ a.BMP”,
4.“ a.JpG”,“ a.GiF”,“ a.PnG”,“ a.BmP”,
5.“ jpg.jpg”,“ gif.gif”,“ png.png”,“ bmp.bmp”

图片不匹配:

1.“ .jpg”,“。gif”,“。png”,“。bmp” –图像文件名是必需的
2。“。jpg”,“。gif”,“。png”,“。bmp” –第一个字符中不允许有空格
3.“ a.txt”,“ a.exe”,“ a。”,“ a.mp3” –仅允许图像文件扩展名
3.“ jpg”,“ gif”,“ png”,“ bmp” –图像文件扩展名

单元测试– ImageValidator

package com.mkyong.regex;

import org.testng.Assert;
import org.testng.annotations.*;
 
/**
 * Image validator Testing
 * @author mkyong
 *
 */
public class ImageValidatorTest {
 
	private ImageValidator imageValidator;
    
	@BeforeClass
        public void initData(){
		imageValidator = new ImageValidator();
        }
    
	@DataProvider
	public Object[][] ValidImageProvider() {
	   return new Object[][]{
    	     {new String[] {
		   "a.jpg", "a.gif","a.png", "a.bmp",
		   "..jpg", "..gif","..png", "..bmp",
		   "a.JPG", "a.GIF","a.PNG", "a.BMP",
		   "a.JpG", "a.GiF","a.PnG", "a.BmP",
		   "jpg.jpg", "gif.gif","png.png", "bmp.bmp"
  	       }
              }
	   };
	}
	
	@DataProvider
	public Object[][] InvalidImageProvider() {
	  return new Object[][]{
	    {new String[] {
		   ".jpg", ".gif",".png",".bmp",
		   " .jpg", " .gif"," .png"," .bmp",
                   "a.txt", "a.exe","a.","a.mp3",
		   "jpg", "gif","png","bmp"
	       }
             }
	   };
	}
	
	@Test(dataProvider = "ValidImageProvider")
	 public void ValidImageTest(String[] Image) {
		
	   for(String temp : Image){
		   boolean valid = imageValidator.validate(temp);
		   System.out.println("Image is valid : " + temp + " , " + valid);
		   Assert.assertEquals(true, valid);
	   }
	   
	}
	
	@Test(dataProvider = "InvalidImageProvider", 
                 dependsOnMethods="ValidImageTest")
	public void InValidImageTest(String[] Image) {
		
	   for(String temp : Image){
		   boolean valid = imageValidator.validate(temp);
		   System.out.println("Image is valid : " + temp + " , " + valid);
		   Assert.assertEquals(false, valid);
	   }
	}	
}

单元测试–结果

Image is valid : a.jpg , true
Image is valid : a.gif , true
Image is valid : a.png , true
Image is valid : a.bmp , true
Image is valid : ..jpg , true
Image is valid : ..gif , true
Image is valid : ..png , true
Image is valid : ..bmp , true
Image is valid : a.JPG , true
Image is valid : a.GIF , true
Image is valid : a.PNG , true
Image is valid : a.BMP , true
Image is valid : a.JpG , true
Image is valid : a.GiF , true
Image is valid : a.PnG , true
Image is valid : a.BmP , true
Image is valid : jpg.jpg , true
Image is valid : gif.gif , true
Image is valid : png.png , true
Image is valid : bmp.bmp , true
Image is valid : .jpg , false
Image is valid : .gif , false
Image is valid : .png , false
Image is valid : .bmp , false
Image is valid :  .jpg , false
Image is valid :  .gif , false
Image is valid :  .png , false
Image is valid :  .bmp , false
Image is valid : a.txt , false
Image is valid : a.exe , false
Image is valid : a. , false
Image is valid : a.mp3 , false
Image is valid : jpg , false
Image is valid : gif , false
Image is valid : png , false
Image is valid : bmp , false
PASSED: ValidImageTest([Ljava.lang.String;@1d4c61c)
PASSED: InValidImageTest([Ljava.lang.String;@116471f)

===============================================
    com.mkyong.regex.ImageValidatorTest
    Tests run: 2, Failures: 0, Skips: 0
===============================================


===============================================
mkyong
Total tests run: 2, Failures: 0, Skips: 0
===============================================

想更多地了解正则表达式? 强烈推荐这本最好的经典书籍-“掌握正则表达式”



翻译自: https://mkyong.com/regular-expressions/how-to-validate-image-file-extension-with-regular-expression/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值