DOM ID中允许哪些字符?

Jos*_*son 107 html dom

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

下划线看起来很好.破折号怎么样?其他特殊字符?

Lud*_*erl 112

实际上HTML和XHTML之间存在差异.由于XHTML是XML,因此XML ID的规则适用:

类型ID的值必须与名称生成匹配.

NameStartChar ::=   ":" | [A-Z] | "_" | [a-z] | [#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]
Run Code Online (Sandbox Code Playgroud)

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

对于HTML,以下内容适用:

id = name [CS]
此属性为元素指定名称.该名称在文档中必须是唯一的.

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(" - "),下划线("_") ,冒号(":")和句号(".").

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

  • 对于那些打算使用CSS或jQuery的人来说,使用句子里面的句子和冒号变得不可能.但是......这是一个很好的黑客方式! (10认同)
  • 正则表达式等价于`/ ^ [az] + [a-z0-9\-_:\.]*$/i`. (7认同)
  • @Dan你总是可以逃脱"." 和使用反斜杠的jquery中的":"... (4认同)
  • 值得注意的是,这意味着XML名称是HTML名称的超集.即任何有效的HTML名称也是有效的XML/XHTML名称. (3认同)
  • @ GajusKuizinas ......但只有你是以欧元为中心并且只接受ASCII字母.那些"gobbeldygook"字符范围如`[#xF900-#xFDCF]`表示名称中允许的有用Unicode字符,正则表达式不允许这样做. (2认同)

Ric*_*dle 22

W3C规范基本HTML数据类型"ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(" - "),下划线(" _"),冒号(":")和句号(".")."

  • 实际上,由于XHTML文档中的XML命名空间,对":"的支持很混乱; 避免使用它是明智的. (7认同)
  • 请特别注意,这意味着ID不能包含空格,这是有道理的,否则<div id ="my thing">将不符合此CSS规则:#my thing {color:red} (2认同)

Alo*_*hci 9

如果我们从字面上理解你的问题的标题,那么HTML和XHTML规则都不适用.相反,相关的规范是DOM.

以DOM Level 3为源,假设"DOM ID"表示设置了"ID"标志的属性,则该值为"DOMString",其中的字符可以是任何UTF-16可编码字符.

16位单元

DOMString的基本单元.这表明DOMString上的索引以16位为单位发生.这不应该被误解为DOMString可以存储任意16位单元.DOMString是以UTF-16编码的字符串; 这意味着必须保持UTF-16的限制以及对字符串的其他相关限制.单个字符,例如以数字字符引用的形式,可以对应于一个或两个16位单元.

当然,这可能不是你想要的,Ludwig Weinzierl的答案就是你想要的.然而,理解并非所有DOM都可以序列化为HTML或XHTML并且DOM具有自己的规则集是明智的.


Phi*_*ber 5

根据HTML 4.0规范

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(" - "),下划线("_") ,冒号(":")和句号(".").

  • HTML5 中取消了这些限制。请参阅http://mathiasbynens.be/notes/html5-id-class。 (2认同)