echo preg_replace('/(?<=\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{1,3}/','*','213.133.241.45');
怎么就报错呢?

解决方案 »

  1.   

    echo preg_replace('#\d+$#','*','213.133.241.45');
      

  2.   

    php 正则中,断言必须是定长的echo preg_replace('/((?:\d{1,3}\.){3})\d{1,3}/','$1*','213.133.241.45');
    213.133.241.*
      

  3.   

    是最后一位数字还是最后的.后的所有数字。
    如果是后者,看斑竹的代码
    如果是前者:
    echo preg_replace('/((?:\d{1,3}\.){3}\d*)\d/','$1*','213.133.241.211');
      

  4.   

    ip 的每一节是不定长的,所以在 php 中无法写
    或许在以后的版本中可以,至少在 5.5 之前不可以
      

  5.   

    手册中 Perl 兼容正则表达式函数--模式语法 一节有明确的论述 什么是断言 什么又是断言必须是定长的