我正在尝试在PHP中编写一个正则表达式(正则表达式)来匹配所有拉丁字母,包括那些特定于Serbo-Croatian的字母,例如“ćčđšž”
这是我的代码:
public function alpha_space( $str )
{
return ( ! preg_match( "/^([-a-z0-9_ ])+$/i", $str ) ) ? FALSE : TRUE;
}
我应该如何修改此代码段,以便正则表达式也适用于塞尔维亚克罗地亚字母?
感谢您提出任何想法。
答案 0 :(得分:2)
这些是Unicode Latin Extended A块的成员,从0x0100到0x017F。您可以使用u
标志按代码点限制字符:
$test = "ćčđšž";
$start = "100";
$finish = "17f";
$pattern = "/^[\x{{$start}}-\x{{$finish}}]*$/u";
$result = preg_match($pattern, $test);
var_dump($result);
所以将它扩展到原始模式看起来像这样:
$pattern = "/^[-a-z0-9_ \x{100}-\x{17f}]+$/ui";
答案 1 :(得分:0)
您可以使用正则表达式\p{L}
来匹配任何Unicode字母。
这会将您的正则表达式更改为:^([-\p{L}0-9_ ])+$
public function alpha_space($str)
{
return ( ! preg_match("/^([-\p{L}0-9_ ])+$/i", $str)) ? FALSE : TRUE;
}