我需要在这样的方法中验证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
答案 0 :(得分:10)
如果您使用的是兼容POSIX的操作系统,则文件名中的合法字符为a-z,A-Z,0-9,句点,下划线和连字符。因此匹配“非法”字符的正则表达式将是
[^-_.A-Za-z0-9]
附录:如果您想要一个完全可移植的文件名,那就是这样。正如我在下面的Josip评论中所纠正的那样,POSIX本身实际上允许更多的角色。
答案 1 :(得分:4)
如果你的想法只是排除ilegal和space char,你可以使用类似的东西:
'^[^*&%\s]+$'
你可以添加任何" ilegal" char进入字符列表(在这种情况下,它忽略*,&,%和空格)\s
是空格! ^
内的[]
是正则表达式语法的一部分,意思是:不匹配[]
内的任何字符。