regex - 正则表达式检查任意位置的 3 个大写字母

标签 regex

我想编写一个正则表达式来检查字符串是否有 3 个大写字母。这些字母不必是一个接一个。

我知道如何使用 (?=.*?[A-Z]) 检查字符串是否有大写字母,但我无法超越此

WsswFeA - will match
AAtrW   - will match
srABFes - will match
srtZfgQ - will not match

请帮助我

最佳答案

我认为您不需要为此使用前瞻。 使用与 anubhava 相同的想法,但将其放在正则表达式的主体中也应该可行。

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

正如您在问题中所指出的.*[A-Z] 检查单个大写字母。因此,要查找其中 3 个,我们只需重复 3 次即可。 (foo){3}(foo)(foo)(foo) 的正则表达式简写。

在您的正则表达式中,您以 ?= 开始该组,这意味着这是一个前瞻。这本质上是询问匹配器是否存在从您当前所在的子组开始的断言匹配。然而,由于这是我们正在测试的唯一条件,我们不妨将其作为我们的主要表达式并避免先行。

关于regex - 正则表达式检查任意位置的 3 个大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538667/

相关文章:

javascript - 按最长公共(public)起始子串对字符串进行分组

json - Kibana查询DSL:如何在包含JSON语法的文本值字段上应用正则表达式过滤器

php - 由于搜索输入中有空格,提交搜索不起作用

javascript - 数字后跟单词的正则表达式

python - 与标点符号匹配整个字符串(使用\b 的问题)

python - Windows 和 Linux 中正则表达式的不同结果?

regex - Perl 问号后跟冒号模式匹配

javascript正则表达式问题

javascript - 用于查找字符串开头和结尾的特殊字符和空格的正则表达式是什么?

regex - R 正则表达式(近词)