Javascript正则表达式删除不需要的<br>,&nbsp;

Nan*_*r V 5 javascript regex jquery

我有这样的JS stirng
&lt;div id="grouplogo_nav"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a class="group_hlfppt" target="_blank" href="http://www.hlfppt.org/"&gt;&amp;nbsp;&lt;/a&gt;&lt;/li&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;

我需要删除所有<br>$nbsp;那些只之间&gt;&lt;.我试着写一个正则表达式,但没有把它弄好.有没有人有解决方案.

编辑:

请注意我只想删除标签b/w &gt;&lt;

emi*_*nor 1

s.replace(/(&gt;)(?:&nbsp;|<br>)+(\s?&lt;)/g,'$1$2');
Run Code Online (Sandbox Code Playgroud)

不要在生产中使用它。参见 Phil H 的回答。

编辑:我尝试解释一下,希望我的英语足够好。

基本上我们这里有两种不同类型的括号。第一对和第三对()是普通括号。它们用于记住与封闭模式匹配的字符并将这些字符分组在一起。对于第二对,我们不需要记住这些字符以供以后使用,因此我们通过使用表单禁用“记住”功能(?:),只对字符进行分组以使+工作按预期进行。量词+的意思是“一次或多次出现”,因此&nbsp;<br>必须出现一次或多次。最后一部分(\s?&lt;)与空白字符 ( \s) 匹配,该空白字符可以缺失或出现一次 ( ?),后跟字符&lt;$1$2是一种变量,被第一个和第三个括号中记住的字符替换。

MDN 提供了一个很好的表格,它解释了所有的特殊字符。

  • 谢谢@eminor,它按需要工作了。您能否解释一下正则表达式的含义或提供一些不错的教程。 (2认同)