var str = "</p>&nbsp;&nbsp;&nbsp;&nbsp;<p>".replace(/&nbsp;/g," ");

解决方案 »

  1.   

    我的必须是</p>开头,</p>结尾,而且中间的&nbsp;的数量不定,所以,上面的不行。
      

  2.   

    先选中这个p元素,然后取得innerHTML,然后将里面的空格替换掉(演示在这里):<p id="content">开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我前面有空格</p>
    <input type="button" onclick="javascript: removeSpaces();" id="test" value="点我去除空格" />function removeSpaces() {
        var ele = document.getElementById("content");
        ele.innerHTML = ele.innerHTML.replace(/&nbsp;/g, "");
    }去除空格的话其实不太推荐用正则表达式,可以先利用浏览器的功能解析成text,然后去除空格,如下:
    ele.innerHTML = ele.innerText.replace(/\s/g, "");
      

  3.   

    无视我上面的回复,我没看清楚问题,你实际想实现的功能是将相邻p元素之间的&nbsp;去掉吗?
    csdn做的好烂,我竟然没有权限删除或者编辑自己的评论,无语了。
      

  4.   

    单纯就这个问题来说,你的正则表达式有两个问题:
    1. &不是正则表达式关键字,无需转义
    2. &nbsp;没有用括号,导致{1,}只应用到;上
    所以改成如下这样即可:
    "</p>&nbsp;&nbsp;&nbsp;&nbsp;<p>".replace(/<\/p>(&nbsp;){1,}<p>/g, '</p><p>');
    另外,如果你是想实现我5楼中说的那个功能,不建议用正则表达式,因为如果以后html代码的结构变了,正则表达式就要重新写,不容易维护
      

  5.   

    如果说p之外全是空格完全可以.replace(/<\/p>(&nbsp;)*<p>/g, '</p><p>')
    问题是不考虑有那么一小个字符或者回车换行之类的在中间吗?造成无法替换了。
      

  6.   

    xzy21com老大, 替换不了啊