我的验证需要具有以下要求的正则表达式:文件扩展名只能出现一次,例如。 myfile.pdf (有效) myfile.pdf.pdf (无效)有效的文件扩展名是 pdf , doc , docx : myfile.pdf (有效) myfile.doc (有效) myfile.txt (无效)你能帮我用java中的正则表达式吗。
myfile.pdf
myfile.pdf.pdf
pdf
doc
docx
myfile.doc
myfile.txt
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; }
1条答案
按热度按时间kkbh8khc1#
我建议单独检查一下要求。例子: