1 回答
TA贡献1817条经验 获得超6个赞
正则表达式修改为
String regex = "\\w+\\.(jpg|png|jpeg|bmp|gif)$";
System.out.println("aiewurkjkjk.jpg".matches(regex));//true
System.out.println("aiewurkjkjkjpg".matches(regex));//false
System.out.println("aiewurkjkjkj.png".matches(regex));//true
System.out.println("aiewurkjkjkj.gif".matches(regex));//true
楼上154538022用户给出的正则表达式是错误的,
String regex = ".*(jpg|png|jpeg|bmp|gif)$";//
System.out.println("aiewurkjkjkjpg".matches(regex));//ture。结果因该为false。
看string的api可以知道
尝试将整个区域与模式匹配,当且仅当整个区域序列匹配此匹配器的模式时才返回 true。所以正则表达式后面的那个$是可有可无。
也就说你使用xxx.matches(pattern)去匹配,需要xxx整个匹配pattern才会返回true。
你应该想根据一个文件后缀名判断一个文件是否是图片,只需要匹配以.jpg,.jpeg等结尾的就可以了。
参考代码:
public static void main(String[] args) {
System.out.println(isImg(".jpgaiewurkjkjk"));//false
System.out.println(isImg("aiewurkjkjkjpg"));//false
System.out.println(isImg("aiewurkjkjkj.png"));//true
System.out.println(isImg(".aiewurkjkjkj.gif"));//true
System.out.println(isImg("我的不是的.gif"));//true
}
public static boolean isImg(String fileName) {
Pattern pattern = Pattern.compile("\\.(jpg|png|jpeg|bmp|gif)$");
Matcher m = pattern.matcher(fileName);
if(m.find()){
return true;
}
return false;
}
添加回答
举报