正则表达式匹配不超过特定数量的大写字符

Regex to match not more then a specific number of upper case characters

我如何创建一个正则表达式来检查字符串中是否没有超过 n 个大写字母,即

如果n=3那么

aAnnBccD#!
AAbbC

应该匹配,而

AbCdeFgHiJ

应该会失败。

请指教。

只需尝试使用以下正则表达式:

^[^A-Z]*([A-Z][^A-Z]*){0,3}$

类似

^([^A-Z\n]*[A-Z][^A-Z\n]*){0,3}$

Regex Demo

只是为了检查,例如 lookahead:

^(?!(?:.*?[A-Z]){4})

这在包含 {4}(超过 3 个)...A-Z

的字符串处失败

see test at regex101