Java正则表达式之账号检验与判断基础

考虑到此时读者不知道何为正则表达式:

我需要验证一个字符串是否符合qq号码的规则,我们采取已有知识进行验证

java 复制代码
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //正则表达式理解为一种规则
        //这种规则就是用来校验字符串的,校验数据格式的合法性
        //核心思想:先把异常数据进行过滤,然后再考虑正常数据
         Scanner sc = new Scanner(System.in);
         System.out.println("请输入一个qq号码");
         String number = sc.next();
         Boolean flag = checkQQ(number);
         System.out.println("qq号码"+flag);
    }
    public static boolean checkQQ(String qq) {
        //6-20位,0不能在开头,必须全部是数字
        int len = qq.length();
        if (len < 6 || len > 20) {
            return false;
        }
        char c = qq.charAt(0);
        if (c == 0) {
            return false;
        }
        for (int i = 0; i < len; i++) {
            char d = qq.charAt(i);
            if (d < '0' || d > '9') {
                return false;
            }

        }
        return true;

    }
}

这样写的逻辑是复杂的,较为浪费时间,因此我们选择采用API正则表达式来完成工作

java 复制代码
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //正则表达式理解为一种规则
        //这种规则就是用来校验字符串的,校验数据格式的合法性
        //核心思想:先把异常数据进行过滤,然后再考虑正常数据
         Scanner sc = new Scanner(System.in);
         System.out.println("请输入一个qq号码");
         String number = sc.next();;
         boolean match = number.matches("[1-9]\\d{5,19}");
         System.out.println("qq号码"+match);
}

接下来我们补充一些正则表达式的判断条件

java 复制代码
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //正则表达式理解为一种规则
        //这种规则就是用来校验字符串的,校验数据格式的合法性
        //核心思想:先把异常数据进行过滤,然后再考虑正常数据

        //我们可以粗略的将正则表达式的作用分成两个方向:
        //a:校验字符串是否满足规则
        //b:在一段文本中查找满足要求的内容
        //正则表达式规则:
        //在正则表达式中[]代表一种范围
        // [abc] 意味着字符串只能出现abc
        // [^abc] 意味着除了abc以外的所有字符
        // [a-zA-Z]a到z A到Z包括范围
        // [a-d[m-p]]a到d或者m到p
        // [a-z&&[def]] a-z和def的交集为 def
        // [a-z&&[^bc]] a-z与非bc的集合

        System.out.println("------------------1----------------");
        System.out.println("a".matches("[abc]"));//true
        System.out.println("z".matches("[abc]"));//false
        System.out.println("------------------2----------------");
        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

        //预定义的字符
        // . 匹配任何字符
        // \d 一个数字[0-9]
        // \D 非数字:[^0-9]
        // \s 一个空白字符
        // \转义字符 改变后面后面字符原本的含义
        System.out.println("\"\"");//这里在""后面加一个\的时候 ""的特殊含义就被去掉了

        //表示任何一个字符 .
        System.out.println("你".matches(".."));//false
        System.out.println("你".matches("."));//true
        System.out.println("你a".matches(".."));//true

        // \\d是任意一位数字
        System.out.println("a".matches("\\d"));//不行 是一位非数字
        System.out.println("3".matches("\\d"));//可以 是一位且数字
        System.out.println("333".matches("\\d"));//不行 不是一位数字

        // \\w是一位单词字符
        System.out.println("z".matches("\\w"));//true
        System.out.println("2".matches("\\w"));//true
        System.out.println("21".matches("\\w"));//false
        System.out.println("你".matches("\\w"));//false
        // 非单词字符 \\W
        System.out.println("你".matches("\\W"));//true
        System.out.println("------------------------------------------------------------------------------");
        //必须是数字 字母 下划线 六位
        System.out.println("2442fsfsf".matches("\\w{6,}"));


    }

}
相关推荐
范什么特西7 小时前
狂神--守护线程
java·linux·服务器
ID_180079054737 小时前
Python采集京东商品详情:基于官方API的规格与价格获取
开发语言·数据库·python
何中应7 小时前
CentOS7安装Maven
java·运维·后端·maven
大猫子的技术日记7 小时前
Playwright 自动化测试入门指南:Python 开发者的端到端实战
开发语言·人工智能·python
韩立学长7 小时前
【开题答辩实录分享】以《夏日计划露营地管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
大鹏说大话7 小时前
Windows 下将 Java 项目打包为 Docker 容器并部署的完整指南
java·windows·docker
Zachery Pole7 小时前
JAVA_03_运算符
java·开发语言·前端
张万森爱喝可乐7 小时前
Java 8 新特性探秘:开启现代Java开发之旅
java
毕设源码-邱学长7 小时前
【开题答辩全过程】以 基于java的网上书店管理系统为例,包含答辩的问题和答案
java·开发语言