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

如何组合C#正则表达式实现字符串需含至少一个大写字母和数字?

解决正则匹配:至少包含一个大写字母和一个数字的字符串

没问题,我来帮你调整这个正则表达式,满足同时匹配至少一个大写字母和至少一个数字的需求。

首先先拆解你原来的正则逻辑:

@"\A(?=\P{Lu}*\p{Lu})(?=\P{Ll}*\p{Ll})\p{L}+\z"
  • \A 和 \z:匹配字符串的开头和结尾,确保是整个字符串符合规则
  • (?=\P{Lu}*\p{Lu}):正向预查,确保字符串里至少有一个大写字母(\p{Lu} 代表Unicode大写字母,\P{Lu} 代表非大写字母)
  • (?=\P{Ll}*\p{Ll}):正向预查,确保至少有一个小写字母
  • \p{L}+:匹配一个或多个Unicode字母

现在要改成要求至少一个大写字母 + 至少一个数字,我们只需要做两处调整:

最终正则表达式

@"\A(?=\P{Lu}*\p{Lu})(?=\P{N}*\p{N})[\p{L}\p{N}]+\z"

详细解释调整点:

  • 替换小写字母的预查:把 (?=\P{Ll}*\p{Ll}) 换成 (?=\P{N}*\p{N}),这个预查用来确保字符串里至少有一个数字(\p{N} 代表Unicode数字,\P{N} 代表非数字字符)
  • 扩展匹配的字符集:把 \p{L}+ 换成 [\p{L}\p{N}]+,这样允许字符串包含字母(任意大小写)和数字,+ 确保至少有一个字符(结合两个预查,实际长度至少是2)

如果你的场景只需要匹配阿拉伯数字(0-9),也可以用更具体的写法:

@"\A(?=\P{Lu}*\p{Lu})(?=\D*\d)[A-Za-z0-9]+\z"

这里 \d 匹配0-9的阿拉伯数字,\D 匹配非数字,[A-Za-z0-9]+ 匹配大小写字母和数字。

验证示例:

  • 匹配成功的字符串:Abc123、Xyz4、1A
  • 匹配失败的字符串:abc123(无大写)、ABCxyz(无数字)、12345(无大写)、aB(无数字)

内容的提问来源于stack exchange,提问作者J.Yeah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:21