有100万备忘所有围绕列举不同层次理解的各种版本和HTML规范中指定的字符实体的管子。 我不想相信他们中任何一个特定的,所以我想我会在这里折腾一下,看看是否有人张贴一个更权威的答案。
所以,让我们假设,我想匹配使用正则表达式的任何和所有字符引用和实体。 我与启动/&(?:#(?:x[0-9a-f]+|[0-9]+)|[az]{???,???});/i
。 但是会进入???
S' 我认为是两个字符长,像实体的lt
和gt
,但是否有在HTML中的任何规格的任何一个字母的实体? 同样,什么是最长的实体? 最后,这些都是只有三个语法在HTML表达的文字字符除了只是直接输入他们,不是吗?
干杯!
最长在HTML5是∳
,并且没有一个字母的名字。
但要注意,当你认为命名实体引用不工作。 一些命名字符引用不要用分号结束,所以正则表达式将不会削减芥末。
HTML5规范现在明确地描述了,什么浏览器使用,因为90年代中期做纠错:显示一字不差的东西,如果它不匹配已知的人格。 因此,如果你希望你的正则表达式就像一个浏览器中运行,你必须复制浏览器的行为。
这意味着,你必须测试针对已知引用的完整列表,就像尤卡提到的一个。 你可以巧妙地利用括号的缩写术语,
[aeiou]uml
但你需要烤同一知识转化为正则表达式,该浏览器有,为了得到相同的结果。
编辑:顺便说一下,命名实体也可能有一些数字,例如, &ensp13;
。
实体名称中有2〜7个字母,下面的SGML传统,这仍然是在HTML 4.01规范(和XHTML规范)的情况。 但HTML5草案中添加大量的实体,称为命名字符引用那里,其中一些是相当长的,像EmptyVerySmallSquare
。 因此,这将是更好的,以避免任何固定的上限 - 或下限大于1。