var str="width:12px;height:13px;margin:10px;padding:23px";
alert(str.replace(/[^|;](?!(width|height|font-size|font-family))([^;]*?;?)/g),'')
希望替换掉style中除了width,height,font-size,font-family等几种样式外的其他样式
如 str="width:12px;height:13px;margin:10px;padding:23px"替换后就成了"width:12px;height:13px;"

解决方案 »

  1.   

    没仔细看
    不过你的正则有个问题
    ?!是预查,即使你匹配对了
    出来的结果也应该是width:12px;height:13px;margin;padding
      

  2.   

    repalce写错啦  所以出来的都是undefined
    至少应该这么写
    alert(str.replace(/[^|;](?!(width|height|font-size|font-family))([^;]*?;?)/g,''))
    var str="width:12px;height:13px;margin:10px;padding:27px";
    alert(str.replace(/(;\s*)(?!(width|height|font-size|font-family)\b)[^\;]*/g,''))
      

  3.   

    看着这么复杂的表达式就有点头疼,楼主是否考虑一下使用split(";"),然后对里面的每一个元素再用表达式貌似简单很多啊?
      

  4.   

    =,=!!!楼主括号写乱了.先把alert去掉看看
    str.replace(/[^|;](?!(width|height|font-size|font-family))([^;]*?;?)/g),''
    这个看最后明显语法有问题么