正则表达式在任何地方检查3个大写字母

时间:2013-12-12 08:43:55

标签: regex

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

我知道如何使用(?=。*?[A-Z])检查字符串是否有任何大写字母,但我不能超越这个

WsswFeA - will match
AAtrW   - will match
srABFes - will match
srtZfgQ - will not match
请求帮助我

3 个答案:

答案 0 :(得分:2)

我认为你不需要使用前瞻。 使用与anubhava相同的想法,但将它放在正则表达式的主体中也应该有效。

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

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

在正则表达式中,您使用?=启动了该组,这意味着这是一个先行。这基本上要求匹配器在您当前所在的子组上开始的断言是否匹配。但是,由于这是我们测试的唯一条件,我们也可以将它作为我们的主要表达并避免前瞻。

答案 1 :(得分:1)

您可以使用此正则表达式:

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

positive lookahead (?=(.*?[A-Z]){3})将确保输入文本中的任意位置至少有3个大写字母。

答案 2 :(得分:0)

你应该试试这个:

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

Regex Demo