正则表达式

一、作用

正则表达式_第1张图片二、正则表达式的匹配规则

正则表达式_第2张图片三、用正则表达式校验数据是否合法

1.正则表达式检验qq号码是否合法

public class RegexTest1 {
    public static void main(String[] args) {
        //正则表达式
        System.out.println (checkQQ ( null ));
        System.out.println (checkQQ ( "5464646" ));
        System.out.println (checkQQ ( "5454sd4646" ));
        System.out.println ("----------------");
        System.out.println (checkQQ1 ( null ));
        System.out.println (checkQQ1 ( "5464646" ));
        System.out.println (checkQQ1 ( "5454sd4646" ));

    }
    public static boolean checkQQ1(String qq){
        return qq!=null&&qq.matches ("[1-9]\\d{5,9}" );//正则表达式匹配
    }
    public static boolean checkQQ(String qq){
        //1.判断qq号码是否为null
        if(qq==null||qq.startsWith ( "0" )||qq.length ()<6||qq.length ()>20){
            return  false;
        }
        //2.qq号至少不是null.....
        //判断qq号全是数字
        for (int i = 0; i < qq.length (); i++) {
            //根据索引提取当前的字符
            char ch = qq.charAt ( i );
            //判断ch记住的字符,如果不是数字,qq号也不合法
            if(ch<'0'||ch>'9'){
                return false;
            }
        }
        //3.说明qq号码一定合法
        return true;
    }
}

 2.正则表达式检验电话号码,邮箱是否合法

mport java.util.Scanner;
//如何校验手机号码
public class RegexTest3 {
    public static void main(String[] args) {
//checkPhone ();
        checkEmial ();
    }

    public static void checkPhone(){
        while (true) {
            System.out.println ("请您输入您的电话号码(手机|座机)");
            Scanner sc = new Scanner ( System.in );
            String phone = sc.nextLine ();
            //
            if (phone.matches ( "(1[3-9]\\d{9})||(0\\d{2,7}-?[1-9]\\d{4,19})" )){
                System.out.println ("您输入的号码格式正确");
                break;
            }else {
                System.out.println ("您输入的号码有误请重新输入");
            }
        }
    }
    public static void checkEmial(){
        while (true) {
            System.out.println ("请您输入您的邮箱");
            Scanner sc = new Scanner ( System.in );
            String email = sc.nextLine ();
            //
            if (email.matches ( "\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}" )){
                System.out.println ("您输入的邮箱格式正确");
                break;
            }else {
                System.out.println ("您输入的邮箱有误请重新输入");
            }
        }
    }
}

四、爬取信息

正则表达式_第3张图片五、用于搜索替换分割内容

正则表达式_第4张图片


import java.util.Arrays;

public class RegexTest5 {
    public static void main(String[] args) {
        //1.public String replaceAll (String regex,String newStr):按照正则表达式匹配的内容进行替换
        //需求1:请把古力娜扎ai8888迪丽热巴999aaa5566马儿扎哈dguagud46642卡尔扎巴中间的中文字符替换成“-”
        String s1="古力娜扎ai8888迪丽热巴999aaa5566马儿扎哈dguagud46642卡尔扎巴";
        System.out.println ( s1.replaceAll ( "\\w+", "-" ) );//古力娜扎-迪丽热巴-马儿扎哈-卡尔扎巴
        //2.文件收到一个 口吃的人说的话   我我我我我爱爱爱爱编编编编编程程程程程程   转化为我爱编程
        String s2="我我我我我爱爱爱爱编编编编编程程程程程程";
        /**
         * (.):匹配任意字符的
         * \\1:为这个组声明一个组号:1号
         * + :声明必须重复的自
         * $1 :取到第一组中重复的紫
         */
        System.out.println ( s2.replaceAll ( "(.)\\1+", "$1" ) );//我爱编程
        //3.请把古力娜扎ai8888迪丽热巴999aaa5566马儿扎哈dguagud46642卡尔扎巴中间人名获取出来
        String s3="古力娜扎ai8888迪丽热巴999aaa5566马儿扎哈dguagud46642卡尔扎巴";
        String[] split = s3.split ( "\\w+" );
        System.out.println ( Arrays.toString ( split ) );//[古力娜扎, 迪丽热巴, 马儿扎哈, 卡尔扎巴]
    }

 

你可能感兴趣的:(正则表达式)