一直以来,正则匹配汉字都是个坑,网上搜索出来的 Unicode码段匹配都不怎么好用。前几天在一个技术群里,看到了一个大牛给出了个不错的解决方案。
下面是我Get到的新技能:
/\p{Han}/u
以前从来没见过这样的正则(原谅我的无知吧)。\p{Han}
代表汉语(中文字符),u
模式修饰符表示被匹配的字符串是utf-8的(传说中的开启Unicode模式?)。这个正则只适合于 “开启Unicode模式的PHP” 和 “1.9以上版本Ruby” 。
实践出真知:
<?php
$value="迷麟--灵山王";
preg_match('/^(\p{Han}){2}/u', $value, $result);
print_r($result);
?>
输出为:
Array
(
[0] => 迷麟
[1] => 麟
)
参考资料:
正则表达式:Unicode诸问题:http://www.infoq.com/cn/news/2011/03/regular-expressions-unicode-2
模式修饰符:http://php.net/manual/zh/reference.pcre.pattern.modifiers.php
欢迎大家学习交流。