用于识别所有错误 HTML 特殊字符的正则表达式

Regex to identify all wrong HTML special chars

我有一个巨大的 HTML,其中有几个特殊字符,格式为  "�

有些是错误的,因为他们缺少首字母&

我想搜索此类错误的空格字符。我知道我可以通过以下正则表达式搜索所有正确的特殊字符:

       \&(?:[a-z]+|#x?\d+);\

但我需要一个 正则表达式来搜索错误的正则表达式(没有首字母 &)。 你能帮助我吗? 提前致谢

编辑:

按照建议,我将 post 举个例子。我的 HTML 包含以下声明:

   <![CDATA[<nolink>blablabla&nbsp;blablabla</nolink>]]>quot;

我们有 2 个特殊的 HTML 字符:

我有兴趣找到第二项,因为它是错误的(缺乏首字母 &)。

所以请求的正则表达式的输出应该是:quot;

您可以在

(?<!&)(?:\b(?:nbsp|quot|divide)|#[0-9a-f]+);

添加您需要的"special chars"。

这个简单的匹配序列,前面没有 &(负向后视 (?<!&) 确保了这一点),那就是

  • nbsp
  • quot
  • 十六进制数,前缀为# (#[0-9a-f]+)

(添加不区分大小写的标志,使十六进制字符可以大写。)

See it here at regex101.

编辑
在 "word entities" 之前添加了对 word break (\b) 的检查,以确保它不匹配部分实体(如果有的话)。

编辑 2
要对所有实体(可能还有其他非实体词)进行通用重新匹配,请尝试

(?<!&)(?:\b(?:[a-z]{2,8}\d{0,2})|#[0-9a-f]+);

Here at regex101.

我试过了:\s(?!&)[A-Za-z0-9]+;

Regex101

试过了
&wudhilweuh212313i9dioed;  wcihecrehc; &wkjdnwkne13131; eiou2ei; 1121i2093;
qeoidjwidw29i1291; 

匹配

wcihecrehc; eiou2ei; 1121i2093;
qeoidjwidw29i1291;

我的例子只是随机的。为什么?据我所知,你想要任何具有由 A-Za-z0-9 组成的字符串的东西,它确实以空白字符开头,后面没有 & 和结尾;。所以我不想让它太受限制。