Java/检查字符串“文件名”是否包含任何文件名不允许的字符



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

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

正则表达式是什么?

可能有一个更优雅的解决方案 - 我不是正则表达式专家,但这个怎么样:

[.]*w[w| |.]*

分解一下:

[.]* 

文件名可以以 0 或多个"." 开头s

w  

然后,您至少需要一个单词字符,可以是 a-z、A-Z、0-9 或 _。 这可以防止文件名为"..."或以空格开头或仅包含"."s 和空格。

[w| |.]*

其余文件名可以包含 0 个或多个单词字符、空格和/或"."我假设您可以修剪尾随空格。

请注意,在 Java 中,您需要转义反斜杠,因此它看起来像这样:

boolean isSafeFilename = Pattern.matches("[.]*\w[\w| |.]*", stringToTest);

我感觉你从来没有访问过这个网站: 正则表达式

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

相关内容

最新更新