Вы можете проверить прямо в грамматике CSS .
В основном 1 , имя должно начинаться с подчеркивания (_
), дефиса (-
) или буквы (a
- z
), за которым следует любое количество дефисов, подчеркиваний, букв или цифр. Есть загвоздка: если первый символ является дефисом, второй символ должен 2 быть буквой или подчеркиванием, а имя должно быть длиной не менее 2 символов.
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
Короче говоря, предыдущее правило переводится в следующее, извлеченное из спецификации W3C. :
В CSS идентификаторы (включая имена элементов, классы и идентификаторы в
селекторы) могут содержать только символы [a-z0-9] и ISO 10646
символы U + 00A1 и выше, плюс дефис (-) и подчеркивание
(_); они не могут начинаться с цифры или с дефиса, за которым следует цифра.
Идентификаторы также могут содержать экранированные символы и любые ISO 10646.
символ в виде числового кода (см. следующий пункт). Например,
идентификатор "B & W?" может быть написано как "B \ & W \?" или "B \ 26 W \ 3F".
Идентификаторы, начинающиеся с дефиса или подчеркивания, обычно зарезервированы для расширений, специфичных для браузера, как в -moz-opacity
.
1 Все это немного усложняется включением экранированных символов Юникода (которые никто в действительности не использует).
2 Обратите внимание, что в соответствии с грамматикой, которую я связал, правило начинается с ДВУХ дефисов, например --indent1
, недействительно. Однако я почти уверен, что видел это на практике.