javascript reg模式匹配css选择器

时间:2013-12-17 02:30:38

标签: javascript css regex

我想尝试使用js reg过滤所有选择器。预测我要匹配div#abc.read-more。(请注意,div#abc.read-more都可以存在或不存在。但如果存在div,则应该在开头) 。我在两个数组中列出了我所知道的所有情况:匹配和不匹配。这是test code。我使用 jasmine 测试工程师。

我现在使用的reg模式是/((\bdiv)+|(\.read-more)+|(#abc)+)(\s*|(:\w+)+)\s*(((?=,)(.*))|$)/

但仍然有两种情况没有通过。 .read-morediv#abc#abcdiv.read-more。常见的是div位于中间位置。

很抱歉,但我知道还有两种情况也会失败:div.read-morediv#abcdiv#abcdiv.read-more。这两者都应该是无与伦比的。

任何人都可以在这里帮忙吗?如果您能解释如何获得解决方案,我将非常感激。 :d

1 个答案:

答案 0 :(得分:1)

对于div.read-morediv#abc:

((\ bdiv)+ |(。read-more)+ |(#abc)+)匹配最后的'#abc'

(\ s * |(:\ w +)+)匹配以下0个空格(\ s *)

\ s *再次匹配0个空格

(((?=,)(。*))| $)匹配字符串的结尾(通过| $)

另一个例子的模式是类似的。在这两种情况下,在生成匹配时都会忽略'div'的存在,因为第一组中3部分OR的另一部分就足够了。