[英]Java regex expression to sanitize an uploaded file name
我正在嘗試清理包含上載文件名稱的字符串。 我這樣做是因為將從網上下載文件,此外,我想對名稱進行標准化。 這是我到目前為止的內容:
private String pattern = "[^0-9_a-zA-Z\\(\\)\\%\\-\\.]";
//Class methods & stuff
private String sanitizeFileName(String badFileName) {
StringBuffer cleanFileName = new StringBuffer();
Pattern filePattern = Pattern.compile(pattern);
Matcher fileMatcher = filePattern.matcher(badFileName);
boolean match = fileMatcher.find();
while(match) {
fileMatcher.appendReplacement(cleanFileName, "");
match = fileMatcher.find();
}
return cleanFileName.substring(0, cleanFileName.length() > 250 ? 250 : cleanFileName.length());
}
可以,但是由於一個奇怪的原因,文件的擴展名被刪除了。 即“ p%Z _-...#!$()=¡¿&+。jpg”最終為“ p%Z _-...()”。
關於如何調整正則表達式的任何想法嗎?
循環結束時需要Matcher#appendTail。
一線解決方案:
return badFileName.replaceAll("[^0-9_a-zA-Z\\(\\)\\%\\-\\.]", "");
如果要將其限制為僅字母數字和空格:
return badFileName.replaceAll("[^a-zA-Z0-9 ]", "");
干杯:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.