java字符串匹配问题

String s = "20121212";
System.out.println(s.matches("[1-2][0-9][0-9][0-9].[0-9].[0-9]"));
输出是true,有点不懂,求解
String s = "2012.1.2";
System.out.println(s.matches("[1-2][0-9][0-9][0-9].[0-9].[0-9]"));
输出是true
String s = "2012.1.2";
System.out.println(s.matches("[1-2][0-9][0-9][0-9]\.[0-9]\.[0-9]"));
输出是true
String s = "20121212";
System.out.println(s.matches("[1-2][0-9][0-9][0-9]\.[0-9]\.[0-9]"));
输出是false

因为方法matches() 的参数是正则表达式。
“.”匹配除 "\n" 之外的任何单个字符。也就匹配任意数字,
所以返回true。

[0-9] 意思是0到9中的任意一个
. 表示 任意一个字符
\.表示匹配“.” 点