preg_match错误的结果

时间:2014-10-04 22:17:11

标签: php regex preg-match

非常自我解释:发生了什么?为什么这个字符串(2个已转换)返回匹配但是为空?而不是一个空的数组?

php > preg_match("/[a-z\s\']*/", (string)2, $matches);
php > var_dump($matches);
array(1) {
  [0]=>
  string(0) ""
}
php > 

2 个答案:

答案 0 :(得分:2)

因为您正在使用*,这表示正则表达式应匹配0或更多次出现的字符类。它匹配字符串中的零次出现,并将它们读入匹配数组。

答案 1 :(得分:1)

*匹配前面标记的零个或多个。正如你所寻求的那样,零长度字符串匹配。如果您不想匹配,请将*替换为+,以至少要求其中一个令牌。