0

我从这里获取了一些代码: -如何区分 jQuery 选择器字符串和其他字符串- 并对其进行了一些修改。但是,我无法让匹配正常工作。我都试过了.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

两者都返回真。

我错过了什么?

4

1 回答 1

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;
}

查看工作演示

于 2012-11-08T19:22:19.047 回答