Le jeu de caractères n'a pas d'importance. Les caractères autorisés sont plus importants. Vérifiez le CSS specification. Voilà une cite de pertinence:
En CSS, les identifiants (y compris les noms d'éléments, les classes et les ID dans selectors) ne peuvent contenir que les caractères [a-zA-Z0-9]
et caractères ISO 10646 U+00A1
et supérieur, ainsi que le trait d'union (-
) et la souligner (_
); ils ne peuvent pas commencer par un chiffre ou un trait d'union suivi d'un chiffre. Les identificateurs peuvent également contenir des caractères échappés et tout caractère ISO 10646 sous la forme d'un code numérique (voir l'élément suivant). Par exemple, l'identifiant "B&W?"
peut être écrit "B\&W\?"
ou "B\26 W\3F"
.
Mise à jour: Quant à la question regex, vous pouvez trouver la grammaire here:
ident -?{nmstart}{nmchar}*
qui contient des parties:
nmstart [_a-z]|{nonascii}|{escape}
nmchar [_a-z0-9-]|{nonascii}|{escape}
nonascii [\240-\377]
escape {unicode}|\\[^\r\n\f0-9a-f]
unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?
h [0-9a-f]
Cela peut se traduire à Java regex comme suit (j'ai seulement ajouté des parenthèses aux parties contenant le OU et échappé aux barres obliques inverses):
String h = "[0-9a-f]";
String unicode = "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?".replace("{h}", h);
String escape = "({unicode}|\\\\[^\\r\\n\\f0-9a-f])".replace("{unicode}", unicode);
String nonascii = "[\\240-\\377]";
String nmchar = "([_a-z0-9-]|{nonascii}|{escape})".replace("{nonascii}", nonascii).replace("{escape}", escape);
String nmstart = "([_a-z]|{nonascii}|{escape})".replace("{nonascii}", nonascii).replace("{escape}", escape);
String ident = "-?{nmstart}{nmchar}*".replace("{nmstart}", nmstart).replace("{nmchar}", nmchar);
System.out.println(ident); // The full regex.
Mise à jour 2: oh, vous êtes plus un PHP'er, eh bien je pense que vous pouvez comprendre comment/où faire str_replace
?
duplication possible de [Quels caractères sont valides dans les noms de classes CSS?] (Http://stackoverflow.com/questions/448981/what-characters-are-valid-in-css-class-names) – mercator
@mercator: Aussi votant pour fermer. =) –
Cette question semble être une copie de s.o.Q448981: [Quels caractères sont valides dans les noms de classes CSS?] (Http://stackoverflow.com/questions/448981/what-characters-are-valid-in-css-class-names) –