日期:2014-05-20  浏览次数:20729 次

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


------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:


    public static void main(String[] args)
    {
        String str1 = "幽鬼(spe)(13812341234)";
        Pattern p = Pattern.compile("\\((\\d+)\\)");
        Matcher m = p.matcher(str1);
        
        if(m.find())
        {
            System.out.println("电话号码:"+m.group(1));
        }
    }

谢谢你的回答。
对于这个字符串可以成功。
但是用户将昵称改为12345677
也就是字符串 "幽鬼(12345677)(13812341234)" 用你这个方法就不行了哦。。。能不能改进下呢,期待中。

那如何定义一个电话号码呢?是最后一个括号里的号码么?
比如“幽鬼(13812341234)(13812341235)”,我应该取哪个作为电话比较好?

是最后一个括号中的11位数字,朋友。。


引用:
怎么没有电猫的手机号呢

如你所愿~

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