1. Schreiben Sie eine JavaScript-Funktion und geben Sie einen Selektor des angegebenen Typs ein (nur drei einfache CSS-Selektoren, id, class und tagName, müssen unterstützt werden, keine Kompatibilität mit kombinierten Selektoren erforderlich)
Das Problem ist: Ich kann den folgenden regulären Abgleich nicht verstehen: var reg = /^(#)?(.)?(w+)$/img;var regResult = reg.exec(selector);, die Details sind wie folgt
var query = function(selector) {
var reg = /^(#)?(\.)?(\w+)$/img;
var regResult = reg.exec(selector);
var result = [];
//如果是id选择器
if(regResult[1]) {
...
}
//如果是class选择器
else if(regResult[2]) {
...
}
//如果是标签选择器
else if(regResult[3]) {
...
}
}
/^(#)?(\.)?(\w+)$/img
拆一下 //之间的是正则的内容 后面img是正则的匹配方式
i:ignorCase忽略大小写
m:mutiple允许多行匹配
g:globle进行全局匹配,指匹配到目标串的结尾
正则内容:
^(#)?(\.)?(\w+)$
^代表以xxx开头 $代表以xxxx结尾(#)?可以带一个或者不带#
(.)? 可以带.或者没有.
(w+) 匹配一个或多个单词
/^(#)?(.)?(w+)$/img
(#)?
匹配ID的(\.)?
匹配className(\w+)
剩下都是标签名或者[1,2]中具体的ID或者className名称谢遥。
请参考 @trionfo1993
给你一个,我写的utils中的dom片段