Bootstrap

Java 正则表达式的基本使用【Pattern】







@[TOC]



正则表达式


Pattern 类是 Java 中正则表达式(regex)处理的核心类,它位于 java.util.regex 包中。Pattern 类表示一个正则表达式的编译表示形式。一旦正则表达式被编译成 Pattern 对象,就可以使用 Pattern 对象的 matcher() 方法来创建一个 Matcher 对象,该对象可以用于对特定字符串进行匹配和查找操作。



正则表达式语法

当使用 Pattern 类时,需了解正则表达式的语法:正则表达式使用特定的字符和元字符来表示模式和匹配规则。例如,. 表示任何字符,* 表示前面的元素可以重复零次或多次,+ 表示前面的元素必须至少出现一次,等等。



编译正则表达式



// 匹配一个或多个数字
Pattern pattern = Pattern.compile("\\d+");     


如上使用 Pattern 类的 compile() 静态方法来编译一个正则表达式,并返回一个 Pattern 对象。



使用正则表达式标志



 Pattern pattern = Pattern.compile("\\d+", Pattern.CASE_INSENSITIVE);


如上可以在编译正则表达式时指定一些标志,以改变正则表达式的行为。例如,Pattern.CASE_INSENSITIVE 标志使匹配操作不区分大小写。









Pattern正则表达式使用实例【2】



1.在控制台上输入密码,要求密码由数字和字母混搭,关键词是_,且密码的长度至少1位,不得超过6位


  • Java 实例 - 在控制台上输入密码要求其数字和字母混搭等长度限制(Pattern正则表达式)

package com.guyu.demo;

import java.util.Scanner;
import java.util.regex.Pattern;

/**
 * 
 * 2024年4月11日 上午9:57:40
 * @author Guyu
 *  Pattern 表达式正则示例:
 *  在控制台上输入密码,要求密码由数字和字母混搭,关键词是_,且密码的长度至少1位,不得超过6位
 *
 */
public class PassWord041101 {
	  public static void main(String[] args) {
	        Scanner scanner = new Scanner(System.in);
	        System.out.println("请输入密码:");
	        String password = scanner.nextLine();

	        if (isValidPassword(password)) {
	            System.out.println("密码有效!");
	        } else {
	            System.out.println("【警告】密码无效,请确保密码:");
	            System.out.println("1. 包含数字和字母混搭");
	            System.out.println("2. 包含关键词\"_\"");
	            System.out.println("3. 长度至少1位");
	            System.out.println("4. 不超过6位");
	        }
	    }

	    private static boolean isValidPassword(String password) {
	        if (password.length() < 1 || password.length() > 6) {
	            return false;
	        }
	        
	        /**
	         * 说明:
	         *  (?=.*[a-zA-Z]) 确保密码中至少有一个字母(无论大小写)。
	         *  (?=.*\\d) 确保密码中至少有一个数字。
	         *  (?=.*_) 确保密码中包含关键词"_"。
	         *  .+ 确保密码长度至少为1位。
	         *  ^ 和 $ 分别匹配字符串的开始和结束,确保整个字符串都符合正则表达式的要求。
	         */
	        Pattern pattern = Pattern.compile("^(?=.*[a-zA-Z])(?=.*\\d)(?=.*_).+$");
	        return pattern.matcher(password).matches();
	    }
}



  • 随机输入后打印结果:

故屿

  • 按要求随机输入后打印结果:

故屿




2.在控制台上输入昵称, 要求昵称由字母和数字混搭,需第一个位置只能是字母,且昵称的长度至少3位,不得超过10位



package com.guyu.demo;

import java.util.Scanner;
import java.util.regex.Pattern;

/**
 * 
 * 2024年4月11日 上午10:29:40
 * @author Guyu
 * Pattern 表达式正则示例:
 * 	用Java编写在控制台上输入昵称, 要求昵称由字母和数字混搭,
 * 	第一个位置只能是字母且昵称的长度至少3位,不得超过10位
 *
 */
public class InputName041102 {
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入昵称:");
        String nickname = scanner.nextLine();

        if (isValidNickname(nickname)) {
            System.out.println("昵称有效!");
        } else {
            System.out.println("【警告】昵称无效,请确保昵称:");
            System.out.println("1. 第一个字符是字母");
            System.out.println("2. 包含字母和数字混搭");
            System.out.println("3. 长度至少为3位");
            System.out.println("4. 不超过10位");
        }
    }

    private static boolean isValidNickname(String nickname) {
        if (nickname.length() < 3 || nickname.length() > 10) {
            return false;
        }

        // 检查第一个字符是否是字母
        if (!Character.isLetter(nickname.charAt(0))) {
            return false;
        }

        /**
         * 检查剩余的字符是否包含字母和数字混搭:
         * 	^ 表示字符串的开始。
         * 	(?=.*[a-zA-Z]) 是一个前视断言,确保字符串中至少有一个字母。
         *  (?=.*\\d) 是另一个前视断言,确保字符串中至少有一个数字。
         *  [a-zA-Z\\d]+ 确保剩余的字符是字母或数字,并且至少有一个这样的字符。
         *  $ 表示字符串的结束。
         */
        Pattern pattern = Pattern.compile("^(?=.*[a-zA-Z])(?=.*\\d)[a-zA-Z\\d]+$");
        return pattern.matcher(nickname).matches();
    }
}



  • 随机输入后打印结果:

故屿

  • 按要求随机输入后打印结果:

故屿





总之,使用 Pattern 正则匹配常用于日常上手机号、身份证号、邮箱、QQ、验证码等多场景









Note:
欢迎点赞,留言,转载请在文章页面明显位置给出原文链接
感谢您在浩瀚的网络世界中精心阅读了此篇文章
衷心希望此文能给您带来帮助
没有个性 哪来的签名!
详情请关注点我
持续更新中

扫一扫 有惊喜!
© 2024 04 - Guyu.com | 【版权所有 侵权必究】
;