Android身份證、手機號、郵箱、QQ號、文件夾正則表達式

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(""); // 將匹配到的非法字符以空替換

這樣寫替換不了,請問下有知道原因的嗎,求告知

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章