HTML 4 normalizes indeed that
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters, digits ([0-9]), hyphens ("-"),
underscores ("_"), colons (":"), and periods (".").
There's a long time browsers apply the much more permissive HTML5 norm, even if it's still not the official one :
Any string, with the following restrictions:
- must be at least one character long
- must not contain any space characters
But be careful as you may have problems with older browsers if not respecting the HTML4 norm. Note also that programmers, in most languages, are used to "usual id", that is more like what you had in HTML4. By using "unusual" id, you run the (not so great) risk to encounter libraries not able to handle them.