java正则表达式太绕了_很是蛋疼的Java正则表达式!

正则表达式修改为

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值