很是蛋疼的Java正则表达式!

String regex = "\\w.(jpg|png|jpeg|bmp|gif)$"

// false

System.out.println("aiewurkjkjkj.jpg".matches(regex));

System.out.println("aiewurkjkjkj.png".matches(regex));

System.out.println("aiewurkjkjkj.gif".matches(regex));

上面的没有一个验证通过!不知道问题出哪里!

正则表达式没有问题,我验证过了...

https://img3.mukewang.com/5c4bf91100013b6008000301.jpg

慕码人8056858
浏览 388回答 1
1回答

慕的地6264312

正则表达式修改为                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;    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript