//写了两个,不知你要的效果是什么
String s3 = "a'b\"ce#f&g";
//替换所有非法字符
//结果: a*b*c*d*e*f*g
System.out.println(s3.replaceAll("['\"<>#&]", "*"));
//替换所有非 非法字符
//结果: *'*"*<*>*#*&*
System.out.println(s3.replaceAll("[^'\"<>#&]", "*"));
[^`\"<>#&] 这个就可以了,不用加前面的 和后面的
你的主要错在这个*号上了,这个表示任意个,逻辑就不通了,可以用+
特殊字符必须要用\转义