正则表达式:字符串是以大写字母开头(不仅仅是在AZ中)?

faq*_*faq 4 php regex

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

例子:

"This is string" - match
"this is string" - not match
"5 not good" - not match
"??????? starts capital" - match
"?????????? no capital" - not match
Run Code Online (Sandbox Code Playgroud)

在PHP中:

if (preg_math('/??/i', $str) ) {
  echo 'yeeee haaa';
}
Run Code Online (Sandbox Code Playgroud)

nha*_*tdh 16

使用这个正则表达式:

preg_match('#^\p{Lu}#u', $str)
Run Code Online (Sandbox Code Playgroud)

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

演示上regex101(请忽略标志m和g,他们是为示范的目的只)

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