8

我需要在这样的方法中验证 a 。

    validateFileName(Editable s) {
        String filtered_str = s.toString();
        if (filtered_str.matches(".*[regexp].*")) {
            filtered_str = filtered_str.replaceAll("[regxp]", "");
            s.clear();
            s.append(filtered_str);}

我应该使用哪些正则表达式来排除所有非法字符和空格?我正在使用 linux

4

2 回答 2

11

如果您使用的是 POSIX 兼容的操作系统,则文件名中的合法字符是 az、AZ、0-9、句点、下划线和连字符。因此,匹配“非法”字符的正则表达式将是

[^-_.A-Za-z0-9]

附录:这是如果您想要一个完全可移植的文件名。正如我在下面 Josip 的评论中得到纠正的那样,POSIX 本身实际上允许更多字符。

于 2014-01-22T18:11:43.533 回答
6

如果您的想法只是排除非法字符和空格字符,您可以使用以下内容:

'^[^*&%\s]+$'

您可以将任何“非法”字符添加到字符列表中(在这种情况下,它会忽略 *、&、% 和空格) \s是空格!^内部[]是正则表达式语法的一部分,它意味着:不匹配内部的任何字符[]

于 2012-04-25T21:44:26.297 回答