Você pode verificar diretamente na gramática CSS .
Basicamente 1 , um nome deve começar com um sublinhado ( _
), um hífen ( -
) ou uma letra ( a
- z
), seguido por qualquer número de hífens, sublinhados, letras ou números. Existe um problema: se o primeiro caractere é um hífen, o segundo caractere deve ser 2 uma letra ou sublinhado e o nome deve ter pelo menos 2 caracteres.
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
Em resumo, a regra anterior se traduz no seguinte, extraída da especificação do W3C. :
No CSS, os identificadores (incluindo nomes de elementos, classes e IDs nos seletores) podem conter apenas os caracteres [a-z0-9] e os caracteres ISO 10646 U + 00A1 e superior, além do hífen (-) e o sublinhado (_) ; eles não podem começar com um dígito ou um hífen seguido por um dígito. Os identificadores também podem conter caracteres de escape e qualquer caractere ISO 10646 como um código numérico (consulte o próximo item). Por exemplo, o identificador "P&B?" pode ser escrito como "B \ & W \?" ou "B \ 26 W \ 3F".
Identificadores começando com um hífen ou sublinhado são normalmente reservados para extensões específicas do navegador, como em -moz-opacity
.
1 Tudo ficou um pouco mais complicado com a inclusão de caracteres unicode escapados (que ninguém realmente usa).
2 Observe que, de acordo com a gramática que eu vinculei, uma regra começando com DOIS hífens, por exemplo --indent1
, é inválida. No entanto, tenho certeza que já vi isso na prática.