正则表达式和枚举类型

2023-12-15 11:40:55

正则表达式和枚举类型

Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机, Java 仍是企业和开发人员的首选开发平台。
? ?

课程内容的介绍

1. 正则表达式
2. 枚举类型
? ?

一、正则表达式

1. 正则表达式的引入
通过案例引入
package com.bobo.regular;

public class RegularDemo01 {

	/**
	 * 校验QQ号是否合法
	 *   1.必须是5~10位
	 *   2.0不可以作为QQ号开头
	 * @param args
	 */
	public static void main(String[] args) {
		String str = "10232a1312";
		System.out.println(checkQQ(str));
		System.out.println(checkQQByRegular(str));

	}
	
	public static boolean checkQQByRegular(String qq){
		// 正则表达式
		String regex = "[1-9][0-9]{4,9}";
		return qq.matches(regex);
	}
	
	/**
	 * 检查QQ号是否合法
	 * 	 1.必须是5~10位
	 *   2.0不可以作为QQ号开头
	 *   3.必须都是数字
	 *   
	 * 检查输入的邮箱是否合法
	 *    1.名称又数字字母特殊符号组成
	 *    2.不能是数字开头
	 *    3.长度5~10位
	 *    4.含有@ 
	 *    5. .....
	 * @param qq
	 * @return
	 */
	public static boolean checkQQ(String qq)
	{
		boolean flag = false;
		// 校验长度5~10位
		if(qq.length() >= 5 && qq.length() <= 10){
			// 保证不是0开头
			if(!qq.startsWith("0")){
				// 必须都是数字  988912a12312
				char ch[] =qq.toCharArray();
				flag = true;
				for(char c : ch){
					if(!Character.isDigit(c)){
						flag = false;
						break;
					}
				}
				
			}
		}
		return flag;
	}

}
? ??
学习正则表达式的目的:通过正则表达式处理了字符串复杂的查找 / 替换 / 匹配 / 分割工作。
? ?
2.正则表达式的概述
概念:使用单个字符串来描述 / 匹配一系列符合某个语法规则的字符串。
使用步骤:
1. 通过大量的字符串找规律定义规则。
2. 使用这种规则去匹配新的字符串。
3. 匹配成功做出相应的操作。
? ?
3. 正则表达式的语法规则
3.1 原义字符
字符本身就是一个正则。
a b c \t \n \r \f
/**
    * 正则表达式的语法规则
    *
    * @param args
    */
public static void main(String[] args) {
    // 原义字符
    String regex = "a";
    String str = " ab1 23dd34 sasdf&s; 234.";
    System.out.println(str.replaceAll(regex, "X"));
    regex = "\t";
    System.out.println(str.replaceAll(regex, "X"));
}
? ?
输出结果
Xb1 23dd34 sXsdf&s; 234.
ab1X23dd34Xsasdf&s;X234.
? ?
3.2 元字符
元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

??
3.2.1 字符类
/**
    * 正则表达式的语法规则
    * 字符类
    * @param args
    */
public static void main(String[] args) {
    // 字符类 [abc]将字符进行了归类,可以出现[]中的其中任意一个字符 就会进行匹配
    String regex = "[abc]";
    String str = " ab1 23dd34 sasdf&s; 234.";
    System.out.println(str.replaceAll(regex, "X"));
    regex = "[^abc]"; // 取反 对不是 abc的字符进行匹配
    System.out.println(str.replaceAll(regex, "X"));
}
? ?
输出结果
XX1 23dd34 sXsdf&s; 234.
XabXXXXXXXXXXaXXXXXXXXXXX
? ?
3.2.2 范围类
其实是在字符类的基础上增加了范围
package com.bobo.regular;

public class RegularDemo04 {

	/**
	 * 正则表达式的语法规则
	 *    范围类 -
	 * @param args
	 */
	public static void main(String[] args) {
		// 字符类 [a-z] 表示代表 a到z的所有的小写字母
		String regex = "[a-z]";
		String str = " ab1 ZZ	23dd34 A	sasdf&s; SD	234.";
		System.out.println(str.replaceAll(regex, "X"));
		regex = "[a-zA-Z]"; 
		System.out.println(str.replaceAll(regex, "X"));
		regex = "[a-zA-Z0-9&;]"; 
		System.out.println(str.replaceAll(regex, "X"));
	}

}
? ?
输出结果
XX1 ZZ 23XX34 A XXXXX&X; SD 234.
XX1 XX 23XX34 X XXXXX&X; XX 234.
XXX XX XXXXXX X XXXXXXXX XX XXX.
? ?
3.2.3 预定义类
我们在上面的范围类的情况下我们知道在实际的开发中我们可能会碰到一些常见的需求比如:判断是否是数字,字母,大写字母等这些情况,对应的范围类正则比较常,所有在正则表达式中会给我们预定义一些有特殊含义的表达式。
\d == [0-9] 数字
\D == [^0-9] 非数字
空白字符:[ \t\n\x0B\f\r] == \s
[^ \t\n\x0B\f\r] == \S
[a-zA-Z0-9] \w
[^a-zA-Z0-9] \W
. 任何字符(与行结束符可能匹配也可能不匹配)
package com.bobo.regular;

public class RegularDemo05 {

	/**
	 * 正则表达式的语法规则
	 *    预定义类
	 *    \d == [0-9] 数字
		\D == [^0-9] 非数字
		空白字符:[ \t\n\x0B\f\r] == \s
		[^ \t\n\x0B\f\r] == \S
		[a-zA-Z0-9] \w
		[^a-zA-Z0-9] \W
		. 任何字符(与行结束符可能匹配也可能不匹配)
	 * @param args
	 */
	public static void main(String[] args) {
		// 字符类 [a-z] 表示代表 a到z的所有的小写字母
		String regex = "\\d";//"[0-9]";
		String str = " ab1 ZZ	23dd34 A	sasdf&s; SD	234.";
		System.out.println(str.replaceAll(regex, "X"));
		regex = "\\D"; 
		System.out.println(str.replaceAll(regex, "X"));
		regex = "\\s"; 
		System.out.println(str.replaceAll(regex, "X"));
		regex = "\\w"; // 匹配字母和数字
		System.out.println(str.replaceAll(regex, "*"));
		regex = "\\W";
		System.out.println(str.replaceAll(regex, "+"));
		
		regex = "."; // . 表示 任何字符  
		System.out.println(str.replaceAll(regex, "+"));
		regex = "\\."; // . 表示 任何字符  如果仅仅只是想要将.的字符匹配 用转意符  
		System.out.println(str.replaceAll(regex, "+"));
	}

}
? ?

文章来源:https://blog.csdn.net/m0_52514893/article/details/134886321
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。