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

时间:2012-09-24 13:30:40

标签: html regex xhtml web character-entities

管周围有一百万个备忘单,它们列举了不同版本和HTML规范所指定的字符实体。我不想相信他们中的任何一个,所以我想我会把它扔到这里,看看是否有人发表了更权威的答案。

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

干杯!

3 个答案:

答案 0 :(得分:4)

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

但请注意,命名实体引用无法正常工作。一些命名的字符引用不以分号结尾,因此正则表达式不会削减芥末。

答案 1 :(得分:3)

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

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

[aeiou]uml

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

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

答案 2 :(得分:2)

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