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


    }

}
相关推荐
weixin-a1530030831629 分钟前
python-装饰器
开发语言·python
我的xiaodoujiao41 分钟前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
OH_TPC1 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
leoZ2313 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
imaol13 小时前
链表 -- 环链表
java·前端·链表
程序员老陆3 小时前
Qt的QThread::usleep和FFmpeg的libavutil模块的av_usleep哪个精度高一些?
开发语言·qt·ffmpeg·音视频
imaol13 小时前
链表 -- 双向链表
java·前端·链表
2601_963869954 小时前
【计算机毕业设计】基于Java的相框定制系统的设计与实现
java·开发语言·课程设计
名字还没想好☜4 小时前
Go 的 unsafe.Pointer 实战:零拷贝 []byte↔string 转换与三条铁律
开发语言·后端·golang·go·unsafe
于烛5 小时前
为什么hasNext() 对只有一个元素的集合返回 true?90%初学者都有的疑问
java