java String.replaceAll 这代码看不懂

String a="V1.04".replaceAll("[^\d.]","");
a最后等于1.04,为什么?
我觉得应该等于"V",因为后面数字和小数点部分已经被空字符替换掉了呀。
为什么?有看到一个appendTail(sb)的方法,可还是不理解,希望高手解惑下

小数点的.需要转义
要输出 V

class Untitled {
    public static void main(String[] args) {
        String a="V1.04".replaceAll("[\\d\\.]","");
        System.out.println(a);
    }
}