Caractères autorisés pour les CSS identifiants
Quelles sont la (pleine) valide /permis charset caractères pour CSS identificateurs id
et class
?
Est-il une expression régulière que je peux utiliser pour la validation? Est-il navigateur agnostique?
- Cette question semble être un doublon de s.o. Q448981: les caractères valides dans les noms de classe CSS?
- double possible de les caractères valides dans les noms de classe CSS?
- Le vote aussi pour le fermer. =)
Vous devez vous connecter pour publier un commentaire.
Le jeu de caractères n'a pas d'importance. Les caractères autorisés est plus important. De vérifier la Spécification CSS. Voici un cite de pertinence:
Mise à jour: Comme pour la regex question, vous pouvez trouver la grammaire ici:
Qui contient des pièces:
Cela peut être traduit en Java regex comme suit (j'ai seulement ajouté des parenthèses pour les pièces contenant le OU et échappé à l'anti-slash):
Mise à jour 2: oh, vous êtes de plus en PHP, er, eh bien, je pense que vous pouvez comprendre comment/où faire
str_replace
?-?([_a-z]|[\x200-\x377]|(\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f]))([_a-z0-9-]|[\x200-\x377]|(\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f]) )*
Encore qui correspond à la chaîne "2thisshouldfail" qui n'est pas valide CSS indicateur\\x200
qui représente hex.Pour ceux qui recherchent quelque chose d'un peu plus de tour de clé. La pleine expression, remplacé toutes et à tous, à partir de @BalusC la réponse est:
Et à l'aide de
DEFINE
, que je trouve un peu plus lisible:D'ailleurs, l'origine de l'expression régulière (et @l'homme de la contribution de) a eu quelques voyous des caractères d'échappement qui permettent
[
dans le nom.Aussi, il convient de noter que les premières regex sans,
DEFINE
, fonctionne sur 2x plus rapide que laDEFINE
expression, en prenant seulement ~23 étapes pour identifier un caractère unicode, tandis que le plus tard prend ~40.Ce n'est qu'une contribution à @BalusC réponse. C'est la version de PHP du code Java, il a fourni, je me suis convertie et j'ai pensé à quelqu'un d'autre pourrait trouver utile.