在Java中如何校验字符串仅包含英文字母与指定特殊字符
Java 字符串合规校验实现
实现思路
使用正则表达式做全字符串匹配,直接限定允许出现的字符范围,性能高、实现简洁,可覆盖所有校验规则。
代码示例
import java.util.regex.Pattern; public class CustomStringValidator { // 预编译正则表达式,重复调用时无需重复解析正则,提升性能 private static final Pattern LEGAL_STRING_PATTERN = Pattern.compile("^[a-zA-Z@._]+$"); /** * 校验字符串是否符合规则:仅允许大小写英文字母、@、.、_,禁止空格及其他所有特殊字符 * @param input 待校验的输入字符串 * @return 符合规则返回true,不符合返回false */ public static boolean checkInputValid(String input) { // 空值、空字符串直接判定为不合法 if (input == null || input.isEmpty()) { return false; } return LEGAL_STRING_PATTERN.matcher(input).matches(); } // 测试用例 public static void main(String[] args) { // 合法用例 System.out.println(checkInputValid("demo@mail.com")); // true System.out.println(checkInputValid("user_name")); // true System.out.println(checkInputValid("Demo.Account")); // true // 非法用例 System.out.println(checkInputValid("demo account")); // 含空格 → false System.out.println(checkInputValid("demo#123")); // 含非法字符# → false System.out.println(checkInputValid("测试账号")); // 含中文 → false System.out.println(checkInputValid("")); // 空字符串 → false System.out.println(checkInputValid(null)); // 空值 → false } }
正则规则说明
^匹配字符串的开始位置,避免字符串前缀出现非法字符[a-zA-Z@._]字符匹配集,仅允许大小写英文字母、@、.、_四种合法字符+匹配前面的字符至少1次,空字符串无法通过校验$匹配字符串的结束位置,避免字符串后缀出现非法字符
内容的提问来源于stack exchange,提问作者user16250363
相关产品推荐
相关产品推荐

