4

如何检查字符串是否以大写字母开头,如果第一个字母可能不在 AZ 范围内,但也来自其他语言,并且同时如果第一个字符不是数字?

例子:

"This is string" - match
"this is string" - not match
"5 not good" - not match
"Увеличи starts capital" - match
"мащабиране no capital" - not match

在 php 中:

if (preg_math('/??/i', $str) ) {
  echo 'yeeee haaa';
}
4

3 回答 3

17

使用这个正则表达式:

preg_match('#^\p{Lu}#u', $str)

\p{Lu}将匹配任何具有大写字母 Unicode 字符属性的字符。

正则表达式 101 上的演示(请忽略标志mg,它们仅用于演示目的)

当您处理 Unicode 字符串时(或者更具体地说,在preg_函数的情况下,Unicode 字符串必须采用 UTF-8 编码),您必须始终使用u标志来使引擎处理输入字符串和带有字符的模式语义。否则,默认情况下,preg_函数将模式和输入字符串视为字节数组,并对 ASCII 范围之外的字符产生意外结果。

于 2013-05-17T12:54:37.553 回答
2

关于什么:

if ($string{0} != mb_strtoupper($string{0}, 'UTF-8')) {
    // not uppercase
}
于 2013-05-17T12:56:21.923 回答
1

也许是这样的:

if (strtoupper($str[0]) == $str[0])
{
   echo "match";
}

或者:

if(ctype_upper($str[0]))
{
   echo "match";
}

我不确定它们是否适用于每个字符集。

于 2013-05-17T13:04:58.157 回答