preg_match无法使用^和$

时间:2017-05-19 08:42:39

标签: php

我使用preg_match来测试带符号和数字的unicode模式。

$reg = '/^(?=.*\p{L})[\d\p{L}]+$/im';
$str = trim('станция44');

if (preg_match($reg, $str) === 1) {
    echo 'Match';
} else {
    echo 'Not match';
}

如果我对其进行测试,则会收到Not match,但如果我删除^ and $,则会收到Match。为什么会这样?

1 个答案:

答案 0 :(得分:0)

因为你正在使用p{L}匹配,所以你需要在最后添加Unicode修饰符(u):

$reg = '/^(?=.*\p{L})[\d\p{L}]+$/imu';

更多信息:http://php.net/manual/en/regexp.reference.unicode.php