我正在尝试在PHP中创建一个匹配字符串中 2个或更多大写字符的模式。
我尝试了以下内容,但它只匹配一行中的2个或更多大写字符,而不是整个字符串:
preg_match('/[A-Z]{2,}/', $string);
例如,字符串“aBcDe”或“Red Apple”应返回true。
答案 0 :(得分:3)
您只需在大写字母之间插入其他字符:
^(?:.*?\p{Lu}){2}
我在这里使用\p{Lu}
来包含Unicode字符。如果您不希望仅使用[A-Z]
,就像您在模式中所做的那样。
这只是意味着:
^
(?:
组:
.*?
匹配任何内容,但尽可能少的字符\p{Lu}
匹配大写字母){2}
...两次答案 1 :(得分:2)
如果你需要做的就是确定一个字符串包含至少2个大写字符,那么你可以使用以下内容:
[A-Z].*?[A-Z]
试试here。
如果需要识别字符串中特定的大写字符,那么事情会变得更复杂。
更新:正如Lucas所说,如果你想要unicode支持,你需要一个不同的正则表达式。
\p{Lu}.*?\p{Lu}
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
[A-Z].*[A-Z]
就像它得到的一样简单 - 匹配大写,然后重复任何次数,然后是任何其他大写字母。