Java / android - 检查字符串`FileName`是否包含任何不允许使用文件名的字符

时间:2014-01-15 02:13:11

标签: java android regex filenames

我正在检查字符串filename是否可以安全保存,方法是检查它是否有正则表达式的任何奇怪字符。它将是一个.json文件,并且还应该允许文件名中的空格。

public static boolean fileNameIsSafe(String nameIncExt) {
        Matcher m = Pattern.compile("regex?").matcher(nameIncExt);
        return m.matches();
    }

正则表达式是什么?

2 个答案:

答案 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

无论如何,您可以匹配字符类中的字符:[/\]\[;']