public class Xu
{
public static void main(String args[])
{ String str = "11.0";
boolean b = str.matches("\\d.?[0-9]?");//为什么输出false,点问号什么意思,反斜杠问号什么意思
//为什么这个有错,我从网上搜的表达式    boolean b = str.matches("^[0-9]+\.{0,1}[0-9]{0,2}$");
                //网址在这里http://www.cnblogs.com/elleniou/archive/2012/07/31/2617312.html
System.out.println(b);
}
}

解决方案 »

  1.   

    这是很基础的正则. \d代表着数字 点好代表着非换行符(dotall模式下除外).应为在java中反斜杠有特殊的意思.所以\d在java中需要改成\\d,问好是有或者无的意思.
    最好你可以查下正则表达式的资料,估计最开头部分已经有将这些内容了
      

  2.   

    String str = "11.0";
    boolean b = str.matches("\\d.?[0-9]?");//为什么输出false,点问号什么意思,反斜杠问号什么意思换成
    boolean b = str.matches("\\d+\\.?[0-9]?");点问号什么意思,反斜杠问号什么意思?
    点问号,代表第二个位置只可以有一个或者没有。反斜杠代表转义。Predefined character classes
    . Any character (may or may not match line terminators)
    \d A digit: [0-9]
    \D A non-digit: [^0-9]
    \s A whitespace character: [ \t\n\x0B\f\r]
    \S A non-whitespace character: [^\s]
    \w A word character: [a-zA-Z_0-9]
    \W A non-word character: [^\w]
    上面的说明中。“ . ”可以匹配任意字符(不包括双引号和其内部的空格)。但是因为你想匹配这一位为 . ,所以要转义,双斜杠转义后是一个斜杠,这个斜杠再和 .转义为实际的点 .。特别地,因为你前面有两个数字,所以应该在 //d 后面添加一个“+”号,以表示可以多个。具体API地址:http://docs.oracle.com/javase/6/docs/api/  关键字:“正则表达式”