regex只允许文件扩展名一次

clj7thdc  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(341)

我的验证需要具有以下要求的正则表达式:
文件扩展名只能出现一次,例如。 myfile.pdf (有效) myfile.pdf.pdf (无效)
有效的文件扩展名是 pdf , doc , docx : myfile.pdf (有效) myfile.doc (有效) myfile.txt (无效)
你能帮我用java中的正则表达式吗。

kkbh8khc

kkbh8khc1#

我建议单独检查一下要求。例子:

public static void main(String[] args) throws Exception {
    String [] fileNames = {"myfile.pdf","myfile.pdf.pdf","myfile.doc","myfile.txt","myfile.txt.doc"};         
    for(String fileName : fileNames){
        boolean valid = hasValidExtension(fileName) && noDuplicates(fileName);
        System.out.println(fileName+"\t" + (valid?"Valid":"Invalid"));
    }
}

public static boolean hasValidExtension(String fileName){
    String ext = fileName.split("\\.(?=[^\\.]+$)")[1];
    if(ext.equals("pdf")||ext.equals("doc")||ext.equals("docx")){
        return true;
    }
    return false;
}

public static boolean noDuplicates(String fileName){
    String[] splited = fileName.split("\\.");
    Set<String> set = new HashSet<>();
    for (String str : splited) {
        if (set.add(str) == false) {
           return false;
        }
    }
    return true;
}

相关问题