You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式:如何匹配仅含一个大写字母的字符串?

如何编写正则表达式确保字符串恰好包含一个大写字母(Java实现)

正则表达式设计思路

要满足"字符串恰好包含一个大写字母,其余字符只能是[a-z]、\d、_或[^\w]"的要求,核心逻辑是锚定整个字符串范围,仅允许出现一次大写字母,其余位置排除所有大写字母。

对应的正则表达式为:

^[^A-Z]*[A-Z][^A-Z]*$

正则各部分解析

  • ^:匹配字符串起始位置,确保从开头开始检查
  • [^A-Z]*:匹配0个或多个非大写字母的字符,完全覆盖题目允许的[a-z]、\d、_、[^\w]这些类型
  • [A-Z]:匹配恰好一个大写字母,这是整个规则的核心限制
  • [^A-Z]*:匹配0个或多个非大写字母的字符,覆盖大写字母之后的所有内容
  • $:匹配字符串结束位置,确保检查覆盖整个字符串

Java代码实现

在Java中直接使用上述正则即可,示例代码如下:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class SingleUppercaseChecker {
    public static void main(String[] args) {
        String regex = "^[^A-Z]*[A-Z][^A-Z]*$";
        Pattern pattern = Pattern.compile(regex);
        
        // 测试用例
        String[] testStrings = {
            "Abc123_",    // 匹配:1个大写字母+小写+数字+下划线
            "aB!@#",      // 匹配:1个大写字母+小写+非单词字符
            "123X",       // 匹配:1个大写字母+数字
            "ABC",        // 不匹配:多个大写字母
            "abc",        // 不匹配:无大写字母
            "A1B2"        // 不匹配:两个大写字母
        };
        
        for (String str : testStrings) {
            Matcher matcher = pattern.matcher(str);
            System.out.printf("字符串\"%s\"匹配结果:%b%n", str, matcher.matches());
        }
    }
}

代码说明

  • Pattern.compile(regex):预编译正则表达式,提升重复匹配的执行效率
  • matcher.matches():判断整个字符串是否完全符合正则规则,而非部分匹配

匹配规则验证

  • 符合匹配的场景:仅含一个大写字母,其余字符为小写字母、数字、下划线或非单词字符(如标点、空格)
  • 不符合匹配的场景:无大写字母、包含2个及以上大写字母

内容的提问来源于stack exchange,提问作者R3bck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:15:42