如何使用JavaScript检查元素文本节点是否在视觉上都为空?
我试图判断一个元素是否没有子元素,并且在视觉上没有文本。检查它是否有孩子是容易的部分如何使用JavaScript检查元素文本节点是否在视觉上都为空?,javascript,regex,removing-whitespace,Javascript,Regex,Removing Whitespace,我试图判断一个元素是否没有子元素,并且在视觉上没有文本。检查它是否有孩子是容易的部分 if ( element.children.length === 0 ) { // true } 困难的部分是处理没有可视指示器的文本节点。例如,具有&zwnj将返回值1: element.innerText.trim().length 如果删除所有不可见的字符、空格和换行符后没有可见的文本,我想将元素报告为空。我不相信.trim()有任何附加选项,所以我认为使用正则表达式替换是最好的方法 这就是我现在正
if ( element.children.length === 0 ) {
// true
}
困难的部分是处理没有可视指示器的文本节点。例如,具有&zwnj使用以下代码检查时,其中的code>将返回值1:
element.innerText.trim().length
如果删除所有不可见的字符、空格和换行符后没有可见的文本,我想将元素报告为空。我不相信.trim()
有任何附加选项,所以我认为使用正则表达式替换是最好的方法
这就是我现在正在使用的:
[代码>元素>代码>元素.内部文本.内部文本.内部文本.内部文本.内部文本.内部文本.替换替换(/////(\h \\\\<<<<代码>元素.内部文本.内部文本.内部文本.内部文本.内部文本.替换替换替换(/////(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\???????????????????????????????00a |\u2028 |\u2029 |\u202f |\u205f |\u3000 |\u180e |\u200b |\u200c | \u200d | \u2060 |\ufeff |\u2800)/g“”,”
除了\h |\r |\n |\s | t
之外,我还从这里提取了字符:
我不知道我的正则表达式是否详尽,或者这里是否有冗余。像“软连字符”这样的字符怎么样。它们只是有时可见。“\s”覆盖了你的许多字符。试图用黑名单解析来自互联网的文本几乎是失败的,因为有人发现你忘记的东西只是时间问题:如果你只针对使用拉丁字母的网站,使用白名单不是更简单吗?将
\h |\r |\n |\s | t |[^\x00-\x7F]
-ish替换为[empty string]
,并检查是否还有剩余内容。