我要匹配gg图片的url, 例如:http://lh4.ggpht.com/_O4CYqF-JdJg/Sho6jaBw0CI/AAAAAAAAAKg/9ALDbl1WAMc/s72/test.jpg在js下, 我这样是可以的:/^http:\/\/[A-Za-z0-9\-_\/\.]+\.(jpg|png|gif)$/但在php下, 这样是失败的#^http:\/\/[A-Za-z0-9_\-\/\.]+\.(jpg|png|gif)$#为什么啦? 正则在js和php下有什么分别?另外, php下用##和用//来包括正则的pattern有什么分别呢?谢谢

解决方案 »

  1.   

    js和php正则基本上没有什么区别.
    最大的区别在于:
    js上正则表达式不需要用引号括起来, 用//来包含表达式就可以了,js将其作为对象来处理.
    PHP下必须要用引号括起来,将其做为字符串处理.在php下,##与//是没有区别的.
      

  2.   

    $s = "http://lh4.ggpht.com/_O4CYqF-JdJg/Sho6jaBw0CI/AAAAAAAAAKg/9ALDbl1WAMc/s72/test.jpg";preg_match("#^http:\/\/[A-Za-z0-9_\-\/\.]+\.(jpg|png|gif)$#", $s, $r);print_r($r); Array
    (
        [0] => http://lh4.ggpht.com/_O4CYqF-JdJg/Sho6jaBw0CI/AAAAAAAAAKg/9ALDbl1WAMc/s72/test.jpg
        [1] => jpg
    )