public static final String EMAIL = "^[a-z0-9]+([._\\\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$";//郵箱
public static final String TEXT = "^([\\u4e00-\\u9fa5])*$";//中文
public static final String ENGLISH = "^([a-zA-Z])*$";//英文
public static final String WEBSITE = "[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\.?";//網址
public static final String ID = "^\\d{6}(18|19|20|21)?\\d{2}(0[1-9]|1[12])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$";//身份證號碼
public static final String QQ = "^[1-9][0-9]{4,11}$";//QQ號
public static final String MOBILE_PHONE = "^0?(13|14|15|17|18|19)[0-9]{9}$";//手機號
public static final String TELEPHONE = "^(\\(\\d{3,4}\\)|\\d{3,4}-|\\s)?\\d{7,14}$";//固話
public static final String DIR = "[^\\s\\\\/:\\*\\?\\\"<>\\|](\\x20|[^\\s\\\\/:\\*\\?\\\"<>\\|])*[^\\s\\\\/:\\*\\?\\\"<>\\|\\.]$";//文件夾
匹配方式:
public static boolean isMatch(final String regex, final CharSequence input) {
return input != null && input.length() > 0 && Pattern.matches(regex, input);
}
例如:手機號
isMatch(MOBILE_PHONE,"18866668888");
在文件夾命名裏面有個優化方式就是當識別到名字不規範的時候,用空字符串替換掉特殊字符,原生api裏面有個replaceAll方法,但是試了下行不通,我就自己寫了個
private static String replaceIllegalFileName(String fileName){
if(!TextUtils.isEmpty(fileName)) {
char[] chars = fileName.toCharArray();
StringBuilder sb = new StringBuilder();
for (char aChar : chars) {
String valueOf = String.valueOf(aChar);
if(" ".equals(valueOf) || "/".equals(valueOf) || ":".equals(valueOf) || "*".equals(valueOf) || "?".equals(valueOf) || "<".equals(valueOf) || ">".equals(valueOf) || "|".equals(valueOf) || "\\".equals(valueOf)){
sb.append("");
}else {
sb.append(aChar);
}
}
return sb.toString();
}else {
return fileName;
}
}
原生方式
String fileName = "文件夾/"; Pattern pattern = Pattern.compile(DIR); Matcher matcher = pattern.matcher(fileName); fileName= matcher.replaceAll(""); // 將匹配到的非法字符以空替換
這樣寫替換不了,請問下有知道原因的嗎,求告知