Java中如何检查字符串是否符合“字母字母数字数字”格式?
Java字符串格式校验与自定义异常实现
正则表达式选择
String.matches()方法完全可以满足你的需求,我们需要使用正则表达式^[A-Za-z]{2}\\d{2}$来匹配"字母字母数字数字"的格式,各部分含义:
^:匹配字符串起始位置,确保从开头就符合规则[A-Za-z]{2}:匹配恰好2个大小写英文字母\\d{2}:匹配恰好2个数字(Java中正则的\d需要转义为\\d)$:匹配字符串结束位置,避免字符串包含多余字符
修正自定义异常类
你的自定义异常类存在不规范的地方,建议调整为符合Java异常使用习惯的写法,让异常本身携带错误信息,而非在构造方法中直接打印:
class FormatException extends Exception { public FormatException() { super("Incorrect format!"); } }
(注:类名首字母大写符合Java命名规范)
完善主逻辑代码
在主方法中添加格式校验逻辑,不符合规则时抛出自定义异常并处理:
import java.util.Scanner; class Main { public static void main(String[] args) { String user; Scanner scanner = new Scanner(System.in); System.out.print("Enter your String: "); user = scanner.nextLine(); // 格式校验与异常抛出 if (!user.matches("^[A-Za-z]{2}\\d{2}$")) { try { throw new FormatException(); } catch (FormatException e) { System.err.println(e.getMessage()); // 可选:异常后终止程序或执行其他处理逻辑 System.exit(1); } } System.out.println("String format is valid!"); scanner.close(); } } class FormatException extends Exception { public FormatException() { super("Incorrect format!"); } }
补充说明
- 若仅需匹配小写字母,可将正则改为
^[a-z]{2}\\d{2}$;仅匹配大写字母则用^[A-Z]{2}\\d{2}$ String.matches()底层基于Pattern和Matcher实现,对于这类简单格式校验,性能和易用性都能满足需求
内容的提问来源于stack exchange,提问作者The GunSlinger
相关产品推荐
相关产品推荐

