如何使用正则表达式验证图像文件扩展名
图像文件扩展名正则表达式模式
([^\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 #3jpg # contains characters "jpg"| # ..orpng # contains characters "png"| # ..orgif # contains characters "gif"| # ..orbmp # 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;@BeforeClasspublic void initData(){imageValidator = new ImageValidator();}@DataProviderpublic 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"}}};}@DataProviderpublic 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.ImageValidatorTestTests 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/
http://www.taodudu.cc/news/show-5799954.html
相关文章:
- 缩放到图层
- 咸鱼Maya笔记—图层操作
- photoshop模糊图层_在Photoshop中按住Ctrl键单击图层
- ArcGIS开发基础教程(四):核心概念之图层和数据(下)
- python嵌套是什么意思_python中的嵌套字典是什么意思?
- java swing 图层_Java swing图层的问题
- 怎么使用混合图层?什么是混合图层?
- 最优化算法数学详解之——梯度下降法和牛顿迭代法
- 机器学习之求解无约束最优化问题方法(手推公式版)
- 安装与运行 | AidLux入门操作①
- AidLux 1.2 正式发布
- Alt+Tab切换应用程序窗口卡顿解决方案
- 带渐变色的柱状图,看着挺美~
- 【博客主页】你值得拥有的渐变色背景!
- echart vue项目中将饼状图块设置成渐变色
- 【常见CSS扫盲之渐变效果】好看的24种CSS渐变效果汇总(附源码)
- Echarts 柱状图、饼状图等变换颜色、渐变色
- pytorch深度学习原理实战-rightness函数
- 深度学习神经网络基本原理
- 【深度学习模型】ChatGPT原理简述
- 什么是深度学习?其工作原理是什么?
- 深度学习的原理是什么?
- 简单讲讲设计四大原则 - 前端读《写给大家看的设计书》收获
- Sketch VS Pixso:这两款热门界面设计软件,谁更能打?
- 【交互设计】如何描述你的产品
- 设计模式----门面模式
- 设计模式 之 命令
- html5--6-44信纸设计
- 每日一个开除小技巧
- 开发工作中使用的命令行
如何使用正则表达式验证图像文件扩展名相关推荐
- js正则表达式验证文件扩展名
验证文件是否是图片 function checkSuffix(str){var strRegex = /\.(jpg|png|gif|bmp|jpeg)$/; if (strRegex.test(st ...
- 图形图像文件扩展名一览(转)
图形图像文件大致上可以分为两大类:一类为位图文件:另一类为矢量类文件.前者以点阵形式描述图形图像,后者是以数学方法描述的一种由几何元素组成的图形图像.位图文件在有足够的文件量的前提下,能真实细腻地反映 ...
- 实验室:通过混淆文件扩展名上传 Web shell
前言: 即使是最详尽的黑名单也可能被经典的混淆技术绕过.假设验证代码区分大小写并且无法识别它exploit.pHp实际上是一个.php文件.如果随后将文件扩展名映射到 MIME 类型的代码不区分大小写 ...
- 递归查找具有特定扩展名的文件
我正在尝试使用我的bash(最新的Ubuntu LTS版本)在目录及其子目录中查找具有特定扩展名的所有文件. 这是在脚本文件中写的: #!/bin/bashdirectory="/home/ ...
- java正则表达式验证_Java中的正则表达式电话号码验证
java正则表达式验证 Validating a phone number using regular expression is tricky because the phone number ca ...
- [转载]使用正则表达式验证本地化数据
使用正则表达式验证本地化数据 数据验证是编写任何用户界面时经常要处理的一项杂务.Java™ 语言的正则表达式支持可以使数据验证变得更容易.您可以定义一个正则表达式,用于描述有效数据,然后让 Java ...
- ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
URL重写已经有很多的方法,但是多数都有一个缺点,就是不支持无扩展名的网页.微软提供的方法需要在根目录里面建立jyk的文件夹,然后再建立一个default.aspx的文件,如果您有100名会员的话,这 ...
- TMG 日志队列(Log Queue,扩展名为 .LLQ)持续增长或 TMG
以下文档转自:http://blog.sina.com.cn/liqiang1359 用户有时会观察到 TMG 日志队列(Log Queue,扩展名为 .LLQ)持续增长或 TMG 安装目录下 Log ...
- 常见文件扩展名(二)
转载至程式先锋技术维客[url]www.javabiz.cn[/url] ASC ASCⅡ文本文件:PGP算法加密文件 ASD Microsoft Word的自动保存文件:Microsoft高级流媒体 ...
最新文章
- android4.4 添加快捷开关(以截屏为例)
- AI科技大本营招实习生了!
- Boost:不受约束的集合bimap的测试程序
- ibd文件如何变为json_如何轻松了解 Python 必学的 django 框架?
- 使用Jedis源码生成Jedis.jar
- 关于http协议详解(摘)
- kafka搭建、学习(一)
- 百度硬盘搜索插件开发指南(摘自百度)
- 北大青鸟汉字注释机内码_北大青鸟主机汉子机内码 汉字机内码在线转换
- fx991计算器矩阵计算机,如何用卡西欧fx991计算器算矩阵
- 高维球体的体积是多少
- 多元统计分析最短距离法_多元统计分析-聚类分析
- 个人所得税java程序怎么编写_个人所得税Java实现代码
- 细数SuperComputer最新排名和常见Benchmark类型
- MySql 查询数据库中所有表名
- jQuery DOM元素的遍历
- HM二次开发 - 外部程序采用socket与HM实现通信
- 手写HashMap及测试
- 软件版本GA,RC,Demo,Build意思
- 网络爬虫---抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享)