java正则使用示例

/*
正则表达式:用于操作字符串数据的规则。

这种规则都用一些符号来标识,简化了代码的书写。

但是一但书写的比较复杂,阅读性就非常差!!!


1,匹配。可以使用String matches(string),可以使用Matcher对象的matcher()方法

2,查找。使用Pattern对象,以及Matcher对象。

3,分割。使用String的split方法。

4,替换。replaceAll




需求:
校验QQ号。
1,5-15位。
2,0不能开头。
3,不可以出现非数字。


练习:将字符串中所有的手机号码,QQ号码。替换#。屏蔽敏感信息。

练习:匹配email地址。

练习:"192.168.1.254 10.10.10.10 3.3.3.3 127.105.10.2"
要求,对四个IP地址进行排序。
*/
import java.util.regex.*;
class  Regex
{
    public static void main(String[] args)
    {
//        splitString();
//        replaceString();
        checkMail();
    }

//    练习:匹配email地址。

    public static void checkMail()
    {
        String mail = "abc1@sina.com";

//        String mailreg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
        String mailreg = "\\w+@\\w+(\\.\\w+)+";//1@1.1

        System.out.println("mail:"+mail.matches(mailreg));


    }



//    使用规则对字符串中的部分进行替换
    
    public static void replaceString()
    {
        String str = "r111waqqfszzdwssse";

        //将叠词替换成#.
        //str = str.replaceAll("(.)\\1+","#");//把重复元素替换成#
        
        //将叠词替换成叠词中一个。
        str = str.replaceAll("(.)\\1+","$1");//把重复元素换成一位当前重复元素  qq-->q
        System.out.println("str="+str);
    }



//    切割字符串通过正则规则
    public static void splitString()
    {
//        String str = "haha.hehe.heihei";

        String str = "r111waqqfszzdwssse";
        //将规则封装成组,通过()的形式完成,封装组的好处就是可以重复使用该组中的规则。
//        可以通过\n的反向引用指定组的序号。
        String[] arr = str.split("(.)\\1+");//qq  校验后一位是否和前一位重复
        for(String s : arr)
        {
            System.out.println(s);
        }
    }




//    使用正则校验QQ
    public static void checkQQ()
    {
        String qq = "1234569";

        String qqreg = "[1-9]\\d{4,14}";
        System.out.println("qq:"+qq.matches(qqreg));
    }

//    使用正则校验手机号码
    public static void checkTel()
    {
        String tel = "15801659340";

        String telreg = "1[35]\\d{9}";

        System.out.println("tel:"+tel.matches(telreg));
    }
        
//    取出字符串中的手机号码。
    public static void getTels()
    {
        String tels = "sd15801659340fs13801659340gsf15901659340sf";

        //取出字符串中所有的电话号码。

        /*
        1,将正则规则封装成Pattern对象。通过Pattern的compile方法。
        2,调用Pattern对象的matcher方法让正则和字符串相关联,并将该规则作用于该字符串。
            因为匹配的内容有可能不唯一,所以将这些匹配的结果进行封装,返回一个匹配器对象Matcher
        3,可以使用匹配器的方法,对符合规则的内容进行操作。如find():查找是否有下一个,group():取出下一个;

        */
        Pattern p  = Pattern.compile("1[35]\\d{9}");
        Matcher m = p.matcher(tels);

        
        while(m.find())
        {
            System.out.println(m.group());
        }
    }

    public static boolean  validateQQ(String qq)
    {
//        qq = qq.trim();

        int len = qq.length();
        if(!(len>=5 && len<=15))
        {
//            System.out.println("长度错误");
            return false;
        }

        if(qq.startsWith("0"))
        {
//            System.out.println("0不可以开头");
            return false;
        }
        try
        {
            long l = Long.parseLong(qq);        
//            System.out.println("qq是正确的");
            return true;
        }
        catch (NumberFormatException e)
        {
//            System.out.println("出现非法字符");
            return false;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值