字符串是html还是选择器? JavaScript的

时间:2012-11-08 19:04:03

标签: javascript html regex string selector

我从这里获取了一些代码: - 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。

这里发生了什么,我错过了?

1 个答案:

答案 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