Bạn có thể kiểm tra trực tiếp tại ngữ pháp CSS .
Về cơ bản 1 , một tên phải bắt đầu bằng dấu gạch dưới ( _
), dấu gạch nối ( -
) hoặc chữ cái ( a
- z
), theo sau là bất kỳ số dấu gạch nối, dấu gạch dưới, chữ cái hoặc số. Có một nhược điểm: nếu ký tự đầu tiên là dấu gạch nối, ký tự thứ hai phải là 2 chữ cái hoặc dấu gạch dưới và tên phải dài ít nhất 2 ký tự.
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
Nói tóm lại, quy tắc trước đó dịch theo sau, được trích xuất từ thông số W3C. :
Trong CSS, các mã định danh (bao gồm tên thành phần, lớp và ID trong bộ chọn) chỉ có thể chứa các ký tự [a-z0-9] và ISO 10646 ký tự U + 00A1 trở lên, cộng với dấu gạch nối (-) và dấu gạch dưới (_) ; chúng không thể bắt đầu bằng một chữ số hoặc dấu gạch nối theo sau là một chữ số. Mã định danh cũng có thể chứa các ký tự thoát và bất kỳ ký tự ISO 10646 nào dưới dạng mã số (xem mục tiếp theo). Chẳng hạn, định danh "B & W?" có thể được viết là "B \ & W \?" hoặc "B \ 26 W \ 3F".
Mã định danh bắt đầu bằng dấu gạch nối hoặc dấu gạch dưới thường được dành riêng cho các tiện ích mở rộng dành riêng cho trình duyệt, như trong -moz-opacity
.
1 Tất cả đã trở nên phức tạp hơn một chút bằng cách đưa vào các ký tự unicode đã thoát (mà không ai thực sự sử dụng).
2 Lưu ý rằng, theo ngữ pháp tôi đã liên kết, một quy tắc bắt đầu bằng dấu gạch nối TWO, ví dụ: --indent1
không hợp lệ. Tuy nhiên, tôi khá chắc chắn rằng tôi đã nhìn thấy điều này trong thực tế.