我需要在这样的方法中验证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);}
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个regexp来排除所有非法字符和空格?我正在使用linux
Ana*_*ist 10
如果您使用的是POSIX兼容的操作系统,在文件名中的合法字符包括az,AZ,0-9,句,下划线和连字符.因此,匹配"非法"字符的正则表达式将是
[^-_.A-Za-z0-9]
附录:如果您想要一个完全可移植的文件名.正如我在下面的Josip评论中所纠正的那样,POSIX本身实际上允许更多的角色.
如果您的想法只是排除ilegal和space char,则可以使用以下方法:
'^[^*&%\s]+$'
您可以在其中将任何“ ilegal”字符添加到字符列表中(在这种情况下,它忽略*,&,%和空格) \s是空格!在^里面的[]是正则表达式语法,这意味着部分:那不是内匹配任何字符[]。