我正在使用Word文档中的一些生成的HTML
,我想在其中提取仅包含完全大写字符和的 段落元素不包含“空元素”或
。我目前正在使用javascript
/ jquery
和regex
来确定要提取的<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"> </p>
您会注意到,由于foo
,第三个allCaps
段落包含在whitespace
和
测试中。有什么办法可以排除它吗?换句话说,是否有正则表达式或其他方法可用于捕获代码段示例中的第一个foo
?
答案 0 :(得分:2)
jquery .text()
函数已经解码了你的html实体,所以你不必担心它。
这里的问题在于你的正则表达式\s*[A-Z,\s]+\s*
,它匹配一个只有空格的字符串。
尝试这样的事情
/^\s*[A-Z][A-Z,\s]*$/