You need to enable JavaScript to run this app. 在Java中如何校验字符串仅包含英文字母与指定特殊字符
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 06:54:05