((\d)?)?
这样行吗?我这儿没jre,你试试吧!

解决方案 »

  1.   

    这个方法可以,如果实在没办法就用这个吧。
    import java.util.regex.*;
    class  TestRegex
    {
    public static void main(String[] args) 
    {
    //System.out.println(Pattern.matches("(\\d\\d)\\l\\l", "12121212"));
    System.out.println(checkNumberLoop("12121212"));
    System.out.println(checkNumberLoop("68686868"));
    System.out.println(checkNumberLoop("118118118"));
    System.out.println(checkNumberLoop("118118117"));
    System.out.println(checkNumberLoop("118"));
    }
    public static boolean checkNumberLoop(String s)
    {
    System.out.print(s + " ");
    if (s==null || s.length()==0)
    {
    return false;
    }
    if (!(Pattern.matches("\\d*",s)))
    {
    return false;
    }
    //System.out.println("All digit");
    int l = s.length();
    for (int i = 1; i <= l/2 + 1 ; i++ )
    {
    if ( l % i == 0)
    {
    //System.out.println("%=00000000000000000000000000");
    int segCount = l/i;
    int segLength = i;
    String seg = s.substring(0, 0+segLength);
    //System.out.println("seg: " + seg);
    int j;
    for (j = 1; j < segCount; j++)
    {
    int start = j*segLength;
    //System.out.println("j=" + j + " substring(): " + s.substring(start, start+segLength));
    if (seg.equals(s.substring(start, start+segLength)))
    {
    continue;
    }
    else
    {
    break;
    }
    }
    if (j == segCount)
    {
    return true;
    }
    }
    }
    return false;
    }
    }
      

  2.   

    正则表达式:(\d+)\1+
    (使用时需要对"\"加转义符)。
    测试例子如下:
    String[] test =
    {
    "hello a",//false
    "1212",//true
    "11221122",//true
    "12",//false
    "123123123",//true
    "1234123123",//false
    "121211",//false
    "" };//falseString pa = "(\\d+)\\1+";
    Pattern p = Pattern.compile(pa);
    for (int i = 0; i < test.length; i++)
    System.out.println(test[i] + "--" + p.matcher(test[i]).matches());刚学了学正则表达式,不敢肯定完全正确,如果有问题请指教。