我正在检查字符串filename
是否可以安全保存,方法是检查它是否有正则表达式的任何奇怪字符。它将是一个.json文件,并且还应该允许文件名中的空格。
public static boolean fileNameIsSafe(String nameIncExt) {
Matcher m = Pattern.compile("regex?").matcher(nameIncExt);
return m.matches();
}
正则表达式是什么?
答案 0 :(得分:2)
可能有更优雅的解决方案 - 我不是正则表达式专家,但是如何:
[.]*\w[\w| |.]*
打破它:
[.]*
文件名可以以0或更多'。'开始
\w
然后你需要至少一个单词字符,可以是a-z,A-Z,0-9或_。这样可以防止以空格开头的“...”或文件名的文件名,或仅包含“。”和“。”的文件名。
[\w| |.]*
剩余的文件名可以包含0个或多个单词字符,空格和/或“。”我假设你可以修剪尾随空格。
注意在Java中你需要转义反斜杠,所以看起来像这样:
boolean isSafeFilename = Pattern.matches("[.]*\\w[\\w| |.]*", stringToTest);
答案 1 :(得分:0)
我觉得你从未访问过这个网站:Regular-Expressions
无论如何,您可以匹配字符类中的字符:[/\]\[;']