首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于利用正则表达式兑现字符的切分

2013-08-01 
关于利用正则表达式实现字符的切分有这么一个字符串: 用户名(用户昵称)(用户编号(固定11位)) 举例:幽鬼(sp

关于利用正则表达式实现字符的切分
有这么一个字符串: 
用户名(用户昵称)(用户编号(固定11位)) 
举例:
幽鬼(spe)(13812341234)
莱恩(lion)(13812341235)
正常情况下我们可以通过字符串"("切分获取手机号。
可以不可用正则表达式来获取手机号信息。
我想过用正则表达式可以获取数字。但是用户昵称里,用户填了数字,划分出来的数据就不是手机号了。
所以,有没有正则表达式来连续数字来实现。
可以分两种情况:
1、用户昵称中设置了填写长度(只能填5个)
2、用户昵称中没有设置填写长度。
小弟对正则表达式的使用不是很好,诚心求教。


如你所愿~


public static void main(String[] args)
    {
        String str1 = "电猫()(110)(112)(13812341234)";
        StringBuilder sBuilder = new StringBuilder(str1);
        String strReverse = sBuilder.reverse().toString();


        Pattern p = Pattern.compile("\\)(\\d+)\\(");//这里的括号左右对调了
        Matcher m = p.matcher(strReverse);
        if(m.find())
        {
        sBuilder.setLength(0);
        sBuilder.append(m.group(1));
            System.out.println("电话号码:"+sBuilder.reverse());
        }
    }


改了下,看看客服和要求,最后一个括号内的电话。
[解决办法]
public static void main(String arg[]) {
List<String> strList = new ArrayList<String>();
String string = "风暴之灵(138123430)(13812341235)";
String regex = "\\(((13
[解决办法]
15
[解决办法]
18)\\d{9})\\)";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(string);
while (m.find()) {
strList.add(m.group(1));
}
if (!strList.isEmpty()) {
System.out.println(strList.get(strList.size() - 1));
}
}

[解决办法]
public class Hello {
    public static String getTelephoneNumber(String str) {
        String pattern = ".+?(\\(.+?\\))?\\((\\d+)\\)";

        return str.replaceAll(pattern, "$2");
    }

    public static void main(String[] args) throws Exception {
        System.out.println(getTelephoneNumber("莱恩(lion)(13812341235)"));
        System.out.println(getTelephoneNumber("莱恩(12345)(13812341235)"));
        System.out.println(getTelephoneNumber("莱恩(12345abc)(13812341235)"));
        System.out.println(getTelephoneNumber("莱恩((((1234567890))))(13812341235)"));
        System.out.println(getTelephoneNumber("莱恩(13812341235)"));
        System.out.println(getTelephoneNumber("莱恩()(13812341235)"));


    }
}[code=java]

13812341235
13812341235
13812341235
13812341235
13812341235
13812341235[/code]
输出

热点排行