亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

很是蛋疼的Java正則表達式!

很是蛋疼的Java正則表達式!

慕碼人8056858 2018-12-12 18:17:53
String regex = "\\w.(jpg|png|jpeg|bmp|gif)$"// falseSystem.out.println("aiewurkjkjkj.jpg".matches(regex));System.out.println("aiewurkjkjkj.png".matches(regex));System.out.println("aiewurkjkjkj.gif".matches(regex));上面的沒有一個驗證通過!不知道問題出哪里!正則表達式沒有問題,我驗證過了...
查看完整描述

1 回答

?
慕的地6264312

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;

    }


查看完整回答
反對 回復 2019-01-26
  • 1 回答
  • 0 關注
  • 406 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號