package com.forfan.bigbang.util; import com.shang.commonjar.contentProvider.SPHelper; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by wangyan-pd on 2016/11/25. */ public class RegexUtil { public static final String SYMBOL_REX_WITH_BLANK = "[ ,\\./:\"\\\\\\[\\]\\|`~!@#\\$%\\^&\\*\\(\\)_\\+=<\\->\\?;',。、;:‘’“”【】《》?\\{\\}!¥…()—=]"; public static final String SYMBOL_REX_WITHOUT_BLANK = "[,\\./:\"\\\\\\[\\]\\|`~!@#\\$%\\^&\\*\\(\\)_\\+=<\\->\\?;',。、;:‘’“”【】《》?\\{\\}!¥…()—=]"; public static String SYMBOL_REX = SYMBOL_REX_WITH_BLANK; public static void refreshSymbolSelection(){ boolean b = SPHelper.getBoolean(ConstantUtil.TREAT_BLANKS_AS_SYMBOL, true); if (b) { SYMBOL_REX = SYMBOL_REX_WITH_BLANK; }else { SYMBOL_REX = SYMBOL_REX_WITHOUT_BLANK; } } public static boolean isEnglish(String charaString){ return charaString.matches("^[a-zA-Z]*-*[a-zA-Z]*"); } public static boolean isPositiveInteger(String orginal) { return isMatch("^\\+{0,1}[1-9]\\d*", orginal); } public static boolean isNegativeInteger(String orginal) { return isMatch("^-[1-9]\\d*", orginal); } public static boolean isWholeNumber(String orginal) { return isMatch("[+-]{0,1}0", orginal) || isPositiveInteger(orginal) || isNegativeInteger(orginal); } public static boolean isPositiveDecimal(String orginal){ return isMatch("\\+{0,1}[0]\\.[1-9]*|\\+{0,1}[1-9]\\d*\\.\\d*", orginal); } public static boolean isNegativeDecimal(String orginal){ return isMatch("^-[0]\\.[1-9]*|^-[1-9]\\d*\\.\\d*", orginal); } public static boolean isDecimal(String orginal){ return isMatch("[-+]{0,1}\\d+\\.\\d*|[-+]{0,1}\\d*\\.\\d+", orginal); } public static boolean isNumber(String orginal){ return isWholeNumber(orginal) || isDecimal(orginal) || isNegativeDecimal(orginal) || isPositiveDecimal(orginal); } private static boolean isMatch(String regex, String orginal){ if (orginal == null || orginal.trim().equals("")) { return false; } Pattern pattern = Pattern.compile(regex); Matcher isNum = pattern.matcher(orginal); return isNum.matches(); } // // 根据Unicode编码完美的判断中文汉字和符号 // public static boolean isChinese(char c) { // Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); // if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS // || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS // || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A // || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B // || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION // || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS // || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) { // return true; // } // return false; // } /** * 输入的字符是否是汉字 * @param a char * @return boolean */ public static boolean isChinese(char a) { int v = (int)a; return (v >=19968 && v <= 171941); } public static boolean isSymbol(char a){ String s = a+""; return s.matches(SYMBOL_REX); } public static boolean isSymbol(String a){ return a.matches(SYMBOL_REX); } }