@[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 正则表达式中常用的正则匹配
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 | 【版权所有 侵权必究】 |