$str='cs0d07n';你说 *和+有什么区别?

解决方案 »

  1.   

    输出:
    0=>
    0=>007其实是正确的,
    前者*匹配的是0到N的十进制数字,因此空也是它能匹配的值,所以才会输出 0=>'',否则没有匹配数组应该是空的;
    因此 \d* 这个正则是没啥意义的。
      

  2.   

       $str="cs007dn";
      preg_match_all('/\d*/',$str,$array);//遍历整个$str然后退出,
      print_r($array);
      preg_match('/\d*/',$str,$array);//当遇到一个满足条件的就退出,0也满足条件,退出
      print_r($array);
      preg_match('/\d+/',$str,$new_array);//当遇到满足条件的就退出,1个或更多个
      print_r($new_array);
      

  3.   

    4楼的大哥说的相当正确,我终于明白了,这不是正则在作怪,而是preg_match函数的运行机制