0
点赞
收藏
分享

微信扫一扫

JavaAPI之正则表达式1之字符类

一:正则表达式概述

正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。正则表达式可以在文本中查找、替换、提取和验证特定的模式。

正则表达式是在Java.util这个包下的,它在API文档中查找的方式:

1.打开JavaAPI文档

                  JavaAPI之正则表达式1之字符类_System

2.点击显示

                  JavaAPI之正则表达式1之字符类_正则表达式_02

3.在搜索框中输入pattern,并回车搜索

                  JavaAPI之正则表达式1之字符类_bc_03

4.在搜索的结果里找到这个java.util.regex.Pattern

                  JavaAPI之正则表达式1之字符类_bc_04

5.点击进入这个包后得到结果,结果如下

                  JavaAPI之正则表达式1之字符类_bc_05

二:正则表达式的作用

简单来说,正则表达式的作用有两个。

作用1:检验字符串是否满足规则

作用2:在一段文本中查找满足要求的内

三:正则表达式的介绍内容

这里介绍正则表达式主要依次是从字符类、预定义字符类、数量词、在字符串方法中的使用等方面介绍。

四:正则表达式的引入

在这里通过验证手机号码来引入正则表达式

在这里首先通过定义一个方法来验证手机号是否正确,接着在使用正则表达式

首先利用定义一个方法来检验手机号码是否正确,截图如下:

                  JavaAPI之正则表达式1之字符类_正则表达式_06

然后在main方法调用方法来验证是否符合规则。

                  JavaAPI之正则表达式1之字符类_bc_07

运行结果如下;

                  JavaAPI之正则表达式1之字符类_bc_08

可以看到前两个手机号码定义的是正确的,而后两个一个出现了字母,另一个以0开头了所以是false。

接着利用正则表达式来验证:

                  JavaAPI之正则表达式1之字符类_bc_09

                  JavaAPI之正则表达式1之字符类_bc_10

来看运行结果

                  JavaAPI之正则表达式1之字符类_System_11

我们发现利用正则表达式来检验比自己定义一个方法更加简单。

整体代码如下:

 /*需求:验证手机号是否正确
             手机号码必须是11位
             而且全部是数字
             手机号开头不能为0
                                                      */

           String phoneNumber1 = "18724564823";
           String phoneNumber2 = "18724564823";
           String phoneNumber3 = "187a4564823";
           String phoneNumber4 = "08724564823";

           System.out.println(checkPhoneNumber(phoneNumber1));
           System.out.println(checkPhoneNumber(phoneNumber2));
           System.out.println(checkPhoneNumber(phoneNumber3));
           System.out.println(checkPhoneNumber(phoneNumber4));

           System.out.println("---------------------------");

           //调用matches方法来检验
           System.out.println(phoneNumber1.matches("[1-9]\\d{10}"));
           System.out.println(phoneNumber2.matches("[1-9]\\d{10}"));
           System.out.println(phoneNumber3.matches("[1-9]\\d{10}"));
           System.out.println(phoneNumber4.matches("[1-9]\\d{10}"));

            }

        public static boolean checkPhoneNumber(String phoneNumber){
          //手机号的规则 ; 手机号码必须是11位 而且全部是数字 手机号开头不能为0
          //1.验证手机号的长度
          //定义一个变量len来表示手机号码的长度
          int len = phoneNumber.length();

          //通过if判断语句来验证长度是否符合规则
          if(len < 11 || len > 11 ){
              return false;
          }

          //0不能在开头
          if(phoneNumber.startsWith("0")){
              return false;
          }

         //而且全部是数字
         //遍历循环得到字符串里每一个索引字符,然后判断是否是数字
            for(int i = 0;i < phoneNumber.length();i++){
              char c = phoneNumber.charAt(i);
              //接着判断每一个字符
              if(c < '0' | c > '9'){
                  return false;
              }
         }
            return true;
        }

五:正则表达式之字符类

                  JavaAPI之正则表达式1之字符类_正则表达式_12

上面的&&表示前后两个的交集

演示代码及结果如下:

 public static void main(String[] args) {

        // 只能是b c d
        System.out.println("c".matches("[bcd]")); // true
        System.out.println("z".matches("[bcd]")); // false

        // 不能出现a b c
        System.out.println("------------------------");
        System.out.println("a".matches("[^abc]")); // false
        System.out.println("z".matches("[^abc]")); // true
        System.out.println("zz".matches("[^abc]")); //false
        System.out.println("zz".matches("[^abc][^abc]")); //true

        // a到zA到Z(包括头尾的范围)
        System.out.println("------------------------");
        System.out.println("a".matches("[a-zA-z]")); // true
        System.out.println("z".matches("[a-zA-z]")); // true
        System.out.println("aa".matches("[a-zA-z]"));//false
        System.out.println("zz".matches("[a-zA-Z]")); //false
        System.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //true
        System.out.println("0".matches("[a-zA-Z]"));//false
        System.out.println("0".matches("[a-zA-Z0-9]"));//true


        // [a-d[m-p]]
        System.out.println("------------------------");
        System.out.println("a".matches("[a-d[m-p]]"));//true
        System.out.println("d".matches("[a-d[m-p]]")); //true
        System.out.println("m".matches("[a-d[m-p]]")); //true
        System.out.println("p".matches("[a-d[m-p]]")); //true
        System.out.println("e".matches("[a-d[m-p]]")); //false
        System.out.println("0".matches("[a-d[m-p]]")); //false

        // [a-z&&[def]]
        System.out.println("----------------------");
        System.out.println("a".matches("[a-z&[def]]")); //false
        System.out.println("d".matches("[a-z&&[def]]")); //true
        System.out.println("0".matches("[a-z&&[def]]")); //false

        // [a-z&&[^bc]]
        System.out.println("-----------------------_");
        System.out.println("a".matches("[a-z&&[^bc]]"));//true
        System.out.println("b".matches("[a-z&&[^bc]]")); //false
        System.out.println("0".matches("[a-z&&[^bc]]")); //false

        // [a-z&&[^m-p]]
        System.out.println("------------------------");
        System.out.println("a".matches("[a-z&&[^m-p]]")); //true
        System.out.println("m".matches("[a-z&&[^m-p]]")); //false
        System.out.println("0".matches("[a-z&&[^m-p]]")); //false


    }

举报

相关推荐

0 条评论