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;
}
添加回答
舉報