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


    }

}
相关推荐
callJJ4 分钟前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油7 分钟前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦7 分钟前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp39 分钟前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy1 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode1 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust1 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
MATLAB代码顾问2 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
jinanwuhuaguo2 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup3 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring