如何用中文获得preg_match 2位数点(可选)?

时间:2018-03-14 03:07:00

标签: php regex preg-match

我试图找出preg_match中文字符。我可以用某种方式获得中文字符

preg_match("/^\p{Han}+/u", $message); //$message = '你好';

但是,有时两位数的数字。在前面这样的事情

$message = '01. 你好' //or '21. 你好'

因此,我的preg_match条件在此消息中不正确。如何用点检查这个可选的两位数?

2 个答案:

答案 0 :(得分:2)

尝试/\p{Han}+/gu之类的:

preg_match("/\p{Han}+/u", $message,$result);

preg_match_all("/\p{Han}+/u", $message,$result);

答案 1 :(得分:1)

您是否可以查看以下php原型代码,以便仅匹配和提取中文字符?如果它符合预期,请告诉我。

$ more test.php test2.php
::::::::::::::
test.php
::::::::::::::
<?php
$string = 'abc 123 車飛行 abc 5344';
$pattern = '/[^\p{Han}]/u';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>
::::::::::::::
test2.php
::::::::::::::
<?php
$message = "01. 你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
$message = "你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
$message = "01。你好";
echo preg_match_all("/^\p{Han}+$/u", $message);
echo "\n";
?>

两个代码的输出是:

1)为了从字符串中仅提取中文字符。

$ php test.php                                                                                                                                 
車飛行

2)为了验证字符串是否只包含中文字符。

$ php test2.php                                                                                                                                
0
1
0