CSS标识符允许使用的字符
CSS标识符和的(完整)有效/允许的 字符集 字符是什么?id``class
是否可以使用正则表达式进行验证?它与浏览器无关吗?
回答:
字符集无关紧要。允许的字符更重要。检查CSS规范。这里是相关的:
在CSS中,标识符(包括选择器中的元素名称,类和ID
)只能包含字符
[a-zA-Z0-9]
和ISO 10646
U+00A0
及更高版本的字符,以及连字符(-
)和下划线(_
);它们不能以数字,两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO10646字符作为数字代码(请参阅下一项)。例如,标识符
"B&W?"
可以写为"B\&W\?"
或"B\26 W\3F"
。
:关于正则表达式问题,您可以在这里找到语法:
ident -?{nmstart}{nmchar}*
其中包含以下部分:
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]
可以将其转换为Java正则表达式,如下所示(我仅将括号添加到包含OR的部分,并转义了反斜杠):
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.
:哦,您更像是一个PHP使用者,好吧,我认为您可以确定如何/在哪里做str_replace
?
以上是 CSS标识符允许使用的字符 的全部内容, 来源链接: utcz.com/qa/421230.html