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

用于删除不需要的Javascript正则表达式<;br>&;nbsp;,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个这样的JS stirng div id=“grouplogo\u nav”ullia class=“group\u hlfppt”target=“\u blank”href=”http://www.hlfppt.org/“&;nbsp/a/li/ul/div 我需要删除所有和$nbsp。我试着写一个正则表达式,但没有写对。有人有解决办法吗 编辑: 请注意,我只想删除标签b/w和myString=myString.replace(/^()+/,“”); myString = mySt

我有一个这样的JS stirng
div id=“grouplogo\u nav”
ul
lia class=“group\u hlfppt”target=“\u blank”href=”http://www.hlfppt.org/“&;nbsp/a/li
/ul
/div

我需要删除所有

$nbsp
之间的代码>。我试着写一个正则表达式,但没有写对。有人有解决办法吗

编辑:

请注意,我只想删除标签b/w

myString=myString.replace(/^(
)+/,“”);
myString = myString.replace(/^(&nbsp;|<br>)+/, '');
。。。其中,
/…/
表示正则表达式,
^
表示字符串的开头,
($nbsp;|
表示

,+表示“前面表达式的一个或多个引用”。然后简单地用一个空字符串替换该完全匹配项。

myString=myString.replace(/^(|
)+/,“”);
myString = myString.replace(/^(&nbsp;|<br>)+/, '');

希望这有助于您在全球范围内进行更换。也不要忘记,您可以关闭
。试试这个:

myString = myString.replace(/(&nbsp;|<br>|<br \/>)/g, '');
myString=myString.replace(/(|
|)/g',);
避免在html上使用正则表达式

尝试从字符串中创建一个临时div,并使用DOM从中删除任何
br
标记。这比使用正则表达式解析html要健壮得多,正则表达式可以是:

请注意,我们在子节点上反向迭代,以便在删除给定的子节点后节点ID保持有效

s.replace(/()(?:|
)+(\s?)/g,$1$2');
不要在生产中使用这个。参见Phil H.的答案

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

基本上我们这里有两种不同的括号。第一对和第三对
()
是普通括号。它们用于记住由封闭模式匹配的字符,并将字符分组在一起。对于第二对,我们不需要记住字符以备以后使用,因此我们使用
(?:)
的形式禁用“记住”功能,并且只对字符进行分组以使
+
按预期工作。
+
量词表示“一次或多次出现”,因此

必须出现一次或多次。最后一部分
(\s?
匹配一个空白字符(
\s
),该字符可能会丢失或出现一次(
),后跟字符
$1
$2
是由第一个和第三个括号中记忆的字符替换的变量


MDN提供了一个解释所有特殊字符的注释。

这对我很有效,请注意多行

myString = myString.replace(/(&nbsp;|<br>|<br \/>)/gm, '');
myString=myString.replace(/(|
|)/gm,”);
这忽略了“介于
之间”的约束,我认为这对当前的问题至关重要。请小心尝试使用javascript解析HTML,这可能会对您的健康有害:我也不喜欢使用正则表达式处理HTML。但我正在使用一个texteditor插件,它将所有换行符转换为

,将空格转换为
  • 标记,这将破坏内容。这是我找到的唯一一个解决办法,谢谢@eminor,它可以根据需要工作。你能解释一下正则表达式的含义吗?或者提供一些很好的教程。谢谢@eminor。你解释得很好。这个链接也提供了很多信息。
    s.replace(/(&gt;)(?:&nbsp;|<br>)+(\s?&lt;)/g,'$1$2');
    
    myString = myString.replace(/(&nbsp;|<br>|<br \/>)/gm, '');