我有以下内容.
 String str = "张三,男--18700000000  20 地址:中国25号"
要把其中的手机号码18700000000 这个提出来(通过正则表达式,不能一个字符一个字符判断。效率太低)字符串(str)解释如下
str = "张三,男--18700000000  20 地址:中国25号"
str = "18700000000,男--李四  20 地址:中国25号"
str = "187000,18700000000--李四  20 地址:中国25号"等等形式.现在的正则表达式写法如下:
String pStr =  str.replaceAll("[^ \\d]", ""); 
输出如下:8700000000  20 25
我只想控制数字长度str.replaceAll("[^ \\d]{11,13}", " ")
这样写更无效请高手指点下。

解决方案 »

  1.   

    - - 要是我果断选择subString了,这段字符筛选用subString也不麻烦
      

  2.   

    final String str = "张三,男--18700000000 a20 地址:中国25号";
    Pattern p  = Pattern.compile("\\d{11}");
    Matcher m = p.matcher(str);
    while(m.find()) {
    System.out.println("gg");
    System.out.println(m.group(0));
    }
      

  3.   

    String str[] = {"187000,18700000000--李四 20 地址:中国25号","18700000000,男--李四 20 地址:中国25号","187000,18700000000--李四 20 地址:中国25号"};
    Matcher m = Pattern.compile("(?<!\\d)(\\d{11,13})(?!\\d)").matcher("");
    for (int i=0;i<str.length;i++) {
    m.reset(str[i]);
    if (m.find()) System.out.println(m.group(1));
    }