正则表达式验证所有上限

时间:2010-11-19 10:04:51

标签: php regex

我想在PHP中使用正则表达式来检查字符串的所有大写。

如果给定的字符串包含所有大写字母而不管数字和其他字符,那么它应该匹配它们。

3 个答案:

答案 0 :(得分:3)

由于您也想匹配其他字符,请查找小写字母而不是大写字母。如果找到,则返回false。 (或使用负字符类的tdammers' suggestion。)

return !preg_match('/[a-z]/', $str);

您也可以跳过正则表达式,只需将strtoupper($str)与原始字符串进行比较,这样就可以保留数字和符号:

return strtoupper($str) == $str;

两者都不考虑多字节字符串;为此,您可以尝试向正则表达式添加u修饰符并分别使用mb_strtoupper()(我还没有测试过 - 有更多经验丰富的Unicode验证吗?)。

答案 1 :(得分:3)

if (preg_match('/^[^\p{Ll}]*$/u', $subject)) {
    # String doesn't contain any lowercase characters
} else {
    # String contains at least one lowercase characters
}

\p{Ll}匹配Unicode小写字母;因此,[^\p{Ll}]匹配任何非小写字母的字符。

答案 2 :(得分:1)

这样的事情可能是:

'/^[^a-z]*$/'

诀窍是使用独占字符类:这个字符匹配所有不是小写字母的字符。请注意,不会检查带重音的字母。