繁体   English   中英

正则表达式验证文件名

[英]Regex to validate a filename

我需要在这样的方法中验证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);}

我应该使用哪个regexp来排除所有非法字符和空格? 我正在使用linux

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

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

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

如果您的想法只是排除ilegal和space char,您可以使用以下内容:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM