我从这里获取了一些代码: - How do I distinguish jQuery selector strings from other strings - 并对其进行了一些修改。但是,我无法使匹配正常工作。我已经尝试了.test
和.exec
。
var htmlExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/;
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 || htmlExpr.test( selector )) {
return true;
} else {
return false;
}
我正在使用#mydiv
和<div class='gallery'>gallery</div>blah
作为selector
两者都返回true。
这里发生了什么,我错过了?
答案 0 :(得分:1)
#mydiv
返回true,因为您在此部分|#([\w\-]+)$
的正则表达式中专门检查了它,您应该消除该部分#mydiv
不匹配,如下所示:
var htmlExpr = /^[^<]*(<[\w\W]+>)[^>]*$/;
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 || htmlExpr.test( selector )) {
return true;
} else {
return false;
}
见工作demo