Java中如何校验数字+字母格式输入的范围(1~34+A~F)
输入格式校验解决方案(134+AF)
直接将包含字母的输入转整数必然抛出NumberFormatException,因为输入不是纯数字字符串。要实现1A到34F的格式校验,推荐先用正则表达式匹配整体格式,再拆分验证数字和字母:
步骤说明
- 用正则锁定输入格式:必须是1-34的数字 + A-F的大写字母,且无多余字符
- 匹配成功后,拆分数字和字母部分,分别做范围校验(正则已做初步限制,二次校验更稳妥)
代码示例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class InputChecker { public static void main(String[] args) { String input = "1A"; // 可替换为测试输入,比如"35A"、"0B"、"34G"等 // 正则解释:^开头/$结尾确保全匹配;数字部分支持1-9、10-29、30-34;字母部分仅A-F Pattern pattern = Pattern.compile("^([1-9]|[12]\\d|3[0-4])([A-F])$"); Matcher matcher = pattern.matcher(input); if (matcher.matches()) { int num = Integer.parseInt(matcher.group(1)); String letter = matcher.group(2); // 双重验证数字范围和字母范围 if (num >= 1 && num <= 34 && letter.matches("[A-F]")) { System.out.println("校验通过"); } else { System.out.println("输入不符合要求"); } } else { System.out.println("输入格式错误"); } } }
扩展说明
- 如果需要支持小写字母
a-f,只需将正则修改为^([1-9]|[12]\\d|3[0-4])([A-Fa-f])$,同时字母验证部分改为[A-Fa-f] - 正则已经限制了数字范围,二次校验是为了避免正则匹配逻辑出现疏漏,提升鲁棒性
内容的提问来源于stack exchange,提问作者noobcoder
相关产品推荐
相关产品推荐

