Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/android-检查字符串“FileName”是否包含任何不允许使用的文件名字符_Java_Android_Regex_Filenames - Fatal编程技术网

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

Java/android-检查字符串“FileName”是否包含任何不允许使用的文件名字符,java,android,regex,filenames,Java,Android,Regex,Filenames,我检查字符串文件名是否可以安全保存,方法是检查它是否有任何带有正则表达式的奇怪字符。它将是一个.json文件,并且应该在文件名中允许空格 public static boolean fileNameIsSafe(String nameIncExt) { Matcher m = Pattern.compile("regex?").matcher(nameIncExt); return m.matches(); } 正则表达式是什么?我感觉您从未访问过此网站

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

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

正则表达式是什么?

我感觉您从未访问过此网站:


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

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

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

细分:

[.]* 
文件名可以以0或更多“.”开头

\w  
然后至少需要一个单词字符,可以是a-z、a-z、0-9或z。这将防止文件名为“…”或文件名以空格开头,或仅包含“.”和空格

[\w| |.]*
剩余的文件名可以有0个或多个单词字符、空格和/或“.”。我假设您可以删除尾随空格

注意:在Java中,您需要避开反斜杠,因此它看起来是这样的:

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

我们可以看到一些示例数据:正确和不正确的输入吗?你的正则表达式尝试也不错。请定义“奇怪的字符”。我会用这个词来指我姐姐的前男友。John Smith.json诸如此类的东西。奇怪的字符如/][;”等,在文件名中是不允许的。我似乎找不到我在该网站上寻找的内容,你说的字符类是什么意思?
[此文本在字符类中]
并且它将只匹配以下任何字符一次:
acdehilnrstx
那么您如何使用它从文件名中删除“/?%*:\“/?!@$^&{}`~[],”,并返回一个“安全”字符串,或者在isSafe()中返回false。