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,}"));


    }

}
相关推荐
加油吧zkf3 分钟前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
Java技术小馆4 分钟前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试
ejinxian18 分钟前
PHP 超文本预处理器 发布 8.5 版本
开发语言·php
Codebee21 分钟前
“自举开发“范式:OneCode如何用低代码重构自身工具链
java·人工智能·架构
程序无bug37 分钟前
手写Spring框架
java·后端
程序无bug39 分钟前
Spring 面向切面编程AOP 详细讲解
java·前端
软件黑马王子44 分钟前
C#系统学习第八章——字符串
开发语言·学习·c#
阿蒙Amon1 小时前
C#读写文件:多种方式详解
开发语言·数据库·c#
全干engineer1 小时前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出
Da_秀1 小时前
软件工程中耦合度
开发语言·后端·架构·软件工程