java文件名校验_在Windows上验证文件名

小编典典

鉴于先前引用的MSDN文档中指定的要求,以下正则表达式应该做得很好:

public static boolean isValidName(String text)

{

Pattern pattern = 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" +

" (?:\\.[^.]*)? # followed by optional extension \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" +

"$ # Anchor to end of string. ",

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);

Matcher matcher = pattern.matcher(text);

boolean isMatch = matcher.matches();

return isMatch;

}

请注意,此正则表达式对文件名的长度没有施加任何限制,但是实际的文件名可能会限制为260或32767个字符,具体取决于平台。

2020-09-15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值