DOM ID中允许使用哪些字符?

可能重复:
什么是HTML中的id属性的有效值?

下划线似乎很好。 破折号呢? 其他特殊字符?

其实HTML和XHTML是有区别的。 由于XHTML是XML,因此适用XML ID的规则:

typesID的值必须与名称生产相匹配。

NameStartChar ::= ":" | [AZ] | "_" | [az] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] 

来源: 可扩展标记语言(XML)1.0(第五版)2.3

对于HTML,以下情况适用:

id = name [CS]
该属性为元素分配一个名称。 该名称在文档中必须是唯一的。

ID和NAME标记必须以字母([A-Za-z])开始,后面跟随任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。

来源: HTML 4规范,第6章,ID令牌

W3C规范Basic HTML数据types表示“ID和名称标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0-9]),连字符(” – “),下划线(” _ “),冒号(”:“)和句号(”。“)。

如果我们从字面上看问题的标题,那么HTML和XHTML规则都不适用。 相反,相关规范是DOM的一个。

以DOM Level 3为源代码,并假设“DOM ID”是指“ID”标志设置的属性,则该值为“DOMString”,其中的字符可以是任何UTF-16可编码字符。

16位单元

DOMString的基本单位。 这表明DOMString的索引是以16位为单位的。 这不能误解为一个DOMString可以存储任意的16位单元。 DOMString是以UTF-16编码的string; 这意味着必须保持UTF-16的限制以及对string的其他相关限制。 单个字符(例如以数字字符引用的forms)可以对应于一个或两个16位单元。

当然,这可能不是你想要的,Ludwig Weinzierl的回答是你正在寻找的。 但是明智的是,并不是所有的DOM都可以被序列化为HTML或XHTML,并且DOM有它自己的一套规则。

根据HTML 4.0规范

ID和NAME标记必须以字母([A-Za-z])开始,后面跟随任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。

为了有效的html又名xhtml,Philippe是正确的。 id属性没有空格或特殊字符(当然不需要转义)。 只有52个字符,大写和小写,数字0-9,连字符(“ – ”),下划线(“_”),冒号(“:”)和句点(“。”)