Java如何编写正则校验字符串同时包含字母、数字且无特殊符号?
Java 正则校验解决方案
最终正则表达式
^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9]+$
规则说明
^匹配字符串的起始位置(?=.*[0-9])正向预查,强制要求字符串中至少包含1个数字(?=.*[a-zA-Z])正向预查,强制要求字符串中至少包含1个字母[a-zA-Z0-9]+限制整个字符串只能由大小写字母、数字组成$匹配字符串的结束位置
Java 代码使用示例
import java.util.regex.Pattern; public class StringValidator { // 预编译正则,提升多次校验的性能 private static final Pattern VALID_PATTERN = Pattern.compile("^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9]+$"); public static boolean checkString(String input) { // 空值直接返回不通过 if (input == null) { return false; } return VALID_PATTERN.matcher(input).matches(); } }
测试用例匹配结果
- 输入
"1111"=> false - 输入
"AAA"=> false - 输入
"1A"=> true - 输入
"A1"=> true - 输入
"111AAA111"=> true - 输入
"AAA11111AA"=> true - 输入
"#AA111BBB"=> false - 输入
"111AAAA$"=> false
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

