Вы можете проверить прямо в грамматике 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
, является недействительным. Тем не менее, я уверен, что видел это на практике.