【持續更新】常用正則表示式
阿新 • • 發佈:2019-02-18
//純數字 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; }
持續更新 想到要用什麼再繼續補充
或者有什麼需要的也可以提一下 正則雖然看著麻煩 但其實很講理