最长和最短的 HTML 字符实体名称是什么



子周围有一百万个备忘单,它们以不同的理解水平枚举了由各种版本和规范的HTML指定的字符实体。 我不想相信其中任何一个,所以我想我会把它扔在这里,看看是否有人发布更权威的答案。

因此,假设我想使用正则表达式匹配任何和所有字符引用和实体。 我会从/&(?:#(?:x[0-9a-f]+|[0-9]+)|[a-z]{???,???});/i开始. 但是???会是什么? 我可以想到两个字符长的实体,如 ltgt ,但是在 HTML 的任何规范中是否有任何单字母实体? 同样,最长的实体是什么? 最后,除了直接键入文字字符之外,这些是在HTML中表达文字字符的唯一三种语法,不是吗?

HTML5中最长的是&CounterClockwiseContourIntegral;,并且没有一个字母的名称。

但请注意,命名实体引用并不像您想象的那样工作。某些命名字符引用不以分号结尾,因此正则表达式不会削减芥末。

HTML5 规范现在明确描述了自 90 年代中期以来浏览器用于执行的纠错操作: 如果它与已知的字符引用不匹配,则逐字显示内容。因此,如果您希望正则表达式像浏览器一样工作,则必须复制浏览器的行为。

这意味着,您必须针对已知引用的完整列表进行测试,例如Jukka提到的列表。您可以通过巧妙地使用括号来缩写该术语,

[aeiou]uml

但是您需要将浏览器拥有的相同知识烘焙到正则表达式中,以获得相同的结果。

编辑:顺便说一下,命名实体也可能包含数字,例如&ensp13;

遵循SGML传统,实体名称过去有2到7个字母,在HTML 4.01规范(和XHTML规范)中仍然如此。但是HTML5草稿添加了大量的实体,在那里称为命名字符引用,其中一些相当长,如EmptyVerySmallSquare。因此,最好避免任何固定的上限 - 或大于1的下限。

相关内容

  • 没有找到相关文章

最新更新