Pattern.compile("# Match a valid Windows filename (unspecified file system). \n"
+ "^ # Anchor to start of string. \n"
+ "(?! # Assert filename is not: CON, PRN, \n"
+ "(?: # AUX, NUL, COM1, COM2, COM3, COM4, \n"
+ "CON|PRN|AUX|NUL| # COM5, COM6, COM7, COM8, COM9, \n"
+ "COM[1-9]|LPT[1-9] # LPT1, LPT2, LPT3, LPT4, LPT5, \n"
+ " ) # LPT6, LPT7, LPT8, and LPT9... \n"
+ " +([.]txt) # followed by .txt \n"
" $ # and end of string \n"
+ ") # End negative lookahead assertion. \n"
+ "[^<>:\"/\\\\|?*\\x00-\\x1F.]* # Zero or more valid filename chars.\n"
+ "[^<>:\"/\\\\|?*\\x00-\\x1F\\ .] # Last char is not a space or dot. \n"
+ " +([.]txt) # followed by .txt \n"
+ "$ # Anchor to end of string. ",
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE| Pattern.COMMENTS);
我正在尝试使用此模式检查来验证文件名(仅.txt
文本文件),但此模式不允许包含句点的文件名,例如:"a.b"
。是否有人建议我缺少什么?
答案 0 :(得分:0)
我认为评论"# Zero or more valid filename chars."
的第4行应该没有点(.
):
+ "[^<>:\"/\\\\|?*\\x00-\\x1F]* # Zero or more valid filename chars.\n"
(而且我不确定倒数第二行中的量词+
是什么。)