Это именно то, что сказано в спецификации.
Из спецификации HTML 4 :
ID и NAME токены должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов ("-"), подчеркиваний ("_"),двоеточия (":") и точки (".").
Хорошая новость заключается в том, что спецификация HTML 5 более мягкая:
Атрибут id
указывает уникальный элемент (ID) его элемента .Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ.Значение не должно содержать пробелов.