1. 程式人生 > >【持續更新】常用正則表示式

【持續更新】常用正則表示式

    //純數字
    private static final String numberOnly = "^\\d+$";
    //空或純數字
    private static final String numberOrNull = "^\\d*$";
    //非數字或字母
    private static final String notNumberOrLetter = "[^0-9a-zA-Z]";
    //數字或字母
    private static final String numberOrLetter = "[0-9a-zA-Z]";
    //日期 yyyy-MM-dd(允許日期不拿0補位)
    private static final String dateStyleOne = "\\d{4}\\-(((0|)[1-9])|1[0-2])\\-((0|)[1-9]|[1-2][0-9]|3[0-1])";
    //日期 yyyy-MM-dd HH:mm:ss(允許日期不拿0補位)
    private static final String dateStyleTwo = "\\d{4}\\-(((0|)[1-9])|1[0-2])\\-((0|)[1-9]|[1-2][0-9]|3[0-1])\\s+(0[1-9]|1\\d|2[0-3]):([0-5]\\d{1}):([0-5]\\d{1})";
    //日期 yyyy-MM-dd(不允許日期不拿0補位)
    private static final String dateStyleThree = "\\d{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[1-2][0-9]|3[0-1])";
    //日期 yyyy-MM-dd HH:mm:ss(不允許日期不拿0補位)
    private static final String dateStyleFour = "\\d{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(0[1-9]|1\\d|2[0-3]):([0-5]\\d{1}):([0-5]\\d{1})";
    //日期只管樣式不管內容  yyyy-MM-dd
    private static final String dateStyleFive = "\\d{4}\\-\\d{2}\\-\\d{2}";
    //漢字
    private static final String chinese = "^[\\u4e00-\\u9fa5]+$";
    
    public static void main(String[] args) 
    {
        //測試哪個正則就用哪個 格式如下
        String date = "2018-06-07 01:00:00";
        boolean result = patternMatches(dateStyleFour,date);
        System.out.println("matches?"+result);
        result = patternFind(dateStyleOne,date);
        System.out.println("find?"+result);
    }
    /**
     * 完全匹配
     * @param pattern 正則表示式
     * @param str 測試字串
     * @return
     */
    public static boolean patternMatches(String pattern,String str) 
    {
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(str);
        if(m.matches()) 
        {
            return true;
        }else 
        {
            return false;
        }
    }
    /**
     * 能找到
     * @param pattern 正則表示式
     * @param str 測試字串
     * @return
     */
    public static boolean patternFind(String pattern,String str)
    {
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(str);
        if(m.find()) 
        {
            return true;
        }else 
        {
            return false;
        }
    }
    /**
     * 替換
     * @param pattern 正則表示式
     * @param toReplace 待轉換文字
     * @param str 把正則部分轉換成什麼
     * @return
     */
    public static String patternReplace(String pattern,String toReplace,String str) 
    {
        return toReplace.replaceAll(pattern, str);
    }
    /**
     * 用正則切分成陣列
     * @param pattern 正則表示式
     * @param str 待切分字串
     * @return
     */
    public static String[] patternSplitToArray(String pattern,String str) 
    {
        return str.split(pattern);
    }
    /**
     * 用正則切分成陣列 並轉為list返回
     * @param pattern 正則表示式
     * @param str 待切分字串
     * @return
     */
    public static List<String> patternSplittoList(String pattern,String str) 
    {
        String[] strs = str.split(pattern);
        List<String> result = new ArrayList<String>();
        for(String string:strs) 
        {
            result.add(string);
        }
        return result;
    } 

持續更新 想到要用什麼再繼續補充

或者有什麼需要的也可以提一下 正則雖然看著麻煩 但其實很講理