我试图找到一个正则表达式,如果一段HTML中的所有标签都是空的,不管属性如何,如果有嵌套的标签,它都匹配。
我的代码基本上看起来像这样:
const emptyHtmlTagRegex = new RegExp(/<[^/>][^>]*><\/[^>]+>/);
if (emptyHtmlTagRegex.test(this.htmlContent)) {
// Output placeholder
};
如果this.htmlContent
为:
<ul><li class="class-name"></li></ul>
<p></p>
但不匹配,如果this.htmlContent
为:
<p>nomatch</p><ul><li></li><ul><p></p>
正则表达式不匹配整个字符串,因此如果有尾随的空标记,测试方法将报告误报:Regex 101 sample
我还尝试使用this.htmlContent.replace(regex,'')
并查找空字符串,但由于与我使用的测试框架的兼容性问题而失败。
1条答案
按热度按时间kfgdxczn1#
多亏了@markalex,我才知道最好通过解析HTML来实现这一点。
对于将来遇到这种情况的人,我的解决方案看起来像这样:
到目前为止,这适用于我测试过的HTML片段。