用HTML标记+ 替换关闭的HTML标记

Replacing closing HTML tags with HTML tag +

本文关键字:HTML 标记 替换      更新时间:2023-09-26

我试图用结束标记+换行符来替换通常的结束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}中)。

我试过用splitjoin和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:替换${1}

var regex = new RegExp("(</.*?>)", "gi");
strContent = strContent.replace(regex, "$1 'n   ")
                       .replace(/'/>/g,'/> 'n    ');

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