用HTML标记+ \ n替换结束HTML标记

时间:2015-04-01 16:26:16

标签: javascript jquery html regex

我试图用结束标签替换一般关闭的html标签+换行符,我在SO上找到了类似的帖子,没有人真正帮助我完成我正在寻找的东西。

</li>将为</li>\n

<img some property />将为<img some property />\n

我设法在php中使用以下功能执行此操作,效果很好:

 public static function addLBinHTML($htmlcode){

     $pattern= array('~(</.*?>)~','(/>)');
     $replace= array('${1} Hallo \n  ','/>\n  ');

     return preg_replace($pattern, $replace, $htmlcode);
}

我试图在JavaScript / jQuery中做同样的事情而且我没有获得变量(在php regex ${1}中)。

我尝试使用.split .join和.replace,我认为.replace是正确的方法。

这是我得到的(我的最后一次,也是最有希望的最接近的尝试)

function setLinebreaks(taID){

   var strContent = $('#'+taID).val();
   var regex = new RegExp("</.*?>", "gi");

    strContent.replace(regex, "${1} \n   ")
              .replace(/\/>/g,'/> \n    ');

   console.log(strContent);
   $('#'+taID).val(strContent);
}

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您必须使用括号捕获正则表达式,指定已替换的字符串并将${1}替换为$1

var regex = new RegExp("(</.*?>)", "gi");

strContent = strContent.replace(regex, "$1 \n   ")
                       .replace(/\/>/g,'/> \n    ');

或者您可以简单地将replace方法放入val函数。