使用案例回顾类库相关知识(中) | 带你学《Java语言高级特性》之四十四

上一篇:使用案例回顾类库相关知识(上) | 带你学《Java语言高级特性》之四十三
回顾之前学习的类库相关知识,我们已经对其基本概念与简单使用有了一个较为全面的了解,现在让我们一起来结合具体的一些案例巩固一下正则表达式的相关内容吧。

【本节目标】
通过阅读本节内容,你将结合相关案例场景进行功能实现,复习正则表达式,使用Matcher类和Pattern类,实现电子邮箱、IP地址的识别和HTML文件的解析,进一步理解与掌握其使用方法。

Email验证

类库案例分析四

输入一个Email地址,然后使用正则表达式验证Email地址格式是否正确。

对于此时的输入可以通过命令参数实现数据的输入,如果要想进行验证,最好的做法是设置一个单独的验证处理类。

public class JavaAPIDemo {
    public static void main(String[] args){
        if (args.length != 1) {   //输入有一个参数
           System.out.println("程序执行错误,没有输入初始化参数,正确格式为:java     JavaAPIDemo EMAIL地址") ;
           System.exit(1) ;   //系统退出
       }
        String email = args[0] ;    //获取初始化参数
        if (Validator.isEmail(email)) {
            System.out.println("输入的email地址正确!") ;
         }else{
            System.out.println("输入的email地址错误!") ;
         }
    }
} 
class Validator {    //定义一个专门的验证程序类
    private Validator() {}
    public static boolean isEmail(String email) {
        if (email == null || "".equals(email)) {     //数据为空
            return false ;
        }
        String regex = "\\w+@\\w+\\.\\w+" ;
        return email.matches(regex) ;
    }
}

如果以后要有更多的验证,只需要在Validator类之中扩展方法即可。

IP验证

类库案例分析五

编写正则表达式,判断给定的是否是一个合法的IP地址。
IP地址的组成就是数字,对于数字的组成有一个基础的要求,第一位的内容只能是无、1、2,后面的内容可以0-9、第三位的内容是0-9。

public class JavaApiDemo {
    public static void main(String[] args) throws Exception {
        String str="192.168.1.2";
        System.out.println(Validator.validateIP(str));
    }
}
class Validator {
    public static boolean validateIP(String ip) {
        if(ip == null || "".equals(ip)) {
            return false;
        }
        String regex = "([12]?[0-9]?[0-9]\\.){3}([12]?[0-9]?[0-9])";
        if(ip.matches(regex)) {  // 验证通过,还需要对IP地址进行拆分处理
            String result [] = ip.split("\\.");  // 拆分数据
            for (int i = 0; i < result.length; i ++) {
                int temp = Integer.parseInt(result[i]);
                if(temp > 255) {
                    return false;
                }
            }
        } else {
            return false;
        }
        return true;
    }
}

运行结果:

true

HTML拆分

类库案例分析六

给定下面的Html代码:

<font  face="Arial,Serif"  size="+2"  color="red">

要对内容进行拆分,拆分之后的结果是:

faceArial,Serif
size+2
colorred

对于测试的操作最简单的做法是分组处理

import  java.util.regex.Matcher;
import  java.util.regex.Pattern;

public  class  JavaApiDemo  {
    public  static  void  main(String[]  args)  throws  Exception  {
        String  str  =  "<font  face=\"Arial,Serif\"  size=\"+2\"  color=\"red\">";
        String  regex  =  "\\w+=\"[a-zA-Z0-9,\\+]+\"";
        Matcher  matcher  =  Pattern.compile(regex).matcher(str);
        while(matcher.find())  {
             String  temp  =  matcher.group(0);
             String  result  []  =  temp.split("=");
             System.out.println(result[0]  +  "\t"  +  result[1].replaceAll("\"",  ""));
        }
    }
}

运行结果:

face Arial,Serif
size +2
color red

这是一个很常见的HTML解析流程。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:使用案例回顾类库相关知识(下) | 带你学《Java语言高级特性》之四十五
更多Java面向对象编程文章查看此处

上一篇:Android 设置EditText光标Curso颜色及粗细


下一篇:【Linux高级驱动】linux设备驱动模型之平台设备驱动机制【转】