匹配整个字符串中的2个或更多大写字符

时间:2015-03-20 09:14:01

标签: php regex

我正在尝试在PHP中创建一个匹配字符串中 2个或更多大写字符的模式。

我尝试了以下内容,但它只匹配一行中的2个或更多大写字符,而不是整个字符串:

preg_match('/[A-Z]{2,}/', $string);

例如,字符串“aBcDe”或“Red Apple”应返回true。

5 个答案:

答案 0 :(得分:3)

您只需在大写字母之间插入其他字符:

^(?:.*?\p{Lu}){2}

Demo

我在这里使用\p{Lu}来包含Unicode字符。如果您不希望仅使用[A-Z],就像您在模式中所做的那样。

这只是意味着:

    从模式的开头
  • ^
  • (?:组:
    • .*?匹配任何内容,但尽可能少的字符
    • \p{Lu}匹配大写字母
  • ){2} ...两次

答案 1 :(得分:2)

如果你需要做的就是确定一个字符串包含至少2个大写字符,那么你可以使用以下内容:

[A-Z].*?[A-Z]

试试here

如果需要识别字符串中特定的大写字符,那么事情会变得更复杂。

更新:正如Lucas所说,如果你想要unicode支持,你需要一个不同的正则表达式。

\p{Lu}.*?\p{Lu}

答案 2 :(得分:0)

如果您需要匹配至少包含2个大写字母的整行/字符串,您还可以使用

^(?=(?:.*[A-Z]){2}).+$

Demo here

答案 3 :(得分:0)

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

说明同样的简单模式。参见演示。

https://regex101.com/r/pT4tM5/23

答案 4 :(得分:0)

[A-Z].*[A-Z]

就像它得到的一样简单 - 匹配大写,然后重复任何次数,然后是任何其他大写字母。