Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript检查元素文本节点是否在视觉上都为空?_Javascript_Regex_Removing Whitespace - Fatal编程技术网

如何使用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将返回值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]
,并检查是否还有剩余内容。