正则表达式的无效匹配('\pL' 在字符 class 中不起作用)

Invalid match for regex ('\pL' does not work within a character class)

为什么 PHP return 当前代码为 0?我只想验证用户名并允许传递所有可用的字母符号(包括所有字符,如 śćę......)。我做错了什么?

$var = 'cz -ęsc';
var_dump(preg_match('/^[\pL -]{1,35}$/', $var)); // int(0)

您需要通过设置 u 标志为您的正则表达式启用 Unicode,即:

$var = 'cz -ęsc';
var_dump(preg_match('/^[\pL -]{1,35}$/u', $var)); // int(1)

有关详细信息,请参阅文档中的 u (PCRE_UTF8) 部分:http://php.net/manual/en/reference.pcre.pattern.modifiers.php