删除不包含字符的HTML元素或

时间:2015-07-07 15:08:16

标签: javascript jquery html regex

我正在使用Word文档中的一些生成的HTML,我想在其中提取仅包含完全大写字符 段落元素不包含“空元素”或&nbsp;。我目前正在使用javascript / jqueryregex来确定要提取的<p class="foo">个元素 - 请参阅代码段:

var allCaps = /^(?=.{1})(\s*[A-Z,\s]+\s*$)/,
    whitespace = /^|s+$/, 
    cont = $('<div class="container">'),
    elems = $('p[class^="foo"]');

elems.each(function(){
  var txt = $(this).first().text();
  if(allCaps.test(txt)){
    if(whitespace.test(txt)){
      var copy = cont.clone();
      var cln = $(this).clone();
      copy.append(cln);
      $('body').append(copy);
    }
  }
});
    
.container{
  padding: 5px;
  border: solid 2px steelblue;
  background-color: pink;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p class="foo">I INTRODUCTION</p>
<p class="foo"><span></span></p>
<!-- THIS ELEMENT IS BEING COPIED -->
<p class="foo">&nbsp;&nbsp;&nbsp;&nbsp;</p>

您会注意到,由于foo,第三个allCaps段落包含在whitespace&nbsp;测试中。有什么办法可以排除它吗?换句话说,是否有正则表达式或其他方法可用于捕获代码段示例中的第一个foo

1 个答案:

答案 0 :(得分:2)

jquery .text()函数已经解码了你的html实体,所以你不必担心它。

这里的问题在于你的正则表达式\s*[A-Z,\s]+\s*,它匹配一个只有空格的字符串。

尝试这样的事情

/^\s*[A-Z][A-Z,\s]*$/