从冒号向后捕获文本,直到逗号或行开头

时间:2014-09-18 20:14:59

标签: javascript regex

我需要创建一个捕获css选择器的javascript正则表达式。

以下是一些例子:

*, ::before, ::after // do not capture anything
::before // do not capture anything
.class1, .class2:before,.class3::after // capture .class2 and .class3
.class4::before // capture .class4
.class-5::before // capture .class-5
.class__6::after // capture .class__6
.class--7 > .child::after // capture .class--7 > .child
#id1 + .something:after // capture #id1 + .something
#id2[attribute-one="1"] + .class8:before // capture #id2[attribute-one="1"] + .class8

Here is what I currently have/([.#\-+~>\[\]\"\'=\w ]+)(?=:?:)/g。这并不理想,因为我基本上必须将特殊字符列入白名单。

相反,我宁愿做类似的事情:

  1. 找到冒号
  2. 向后退,直到我点击逗号或开头
  3. 忽略单个空格的奖励点,所以

    *, ::before
    

    不会捕获逗号后面的空格。

    注意:这实际上是此question

    的更复杂版本

2 个答案:

答案 0 :(得分:0)

(?!,\s*:),([^,:]+):|^(?!\s*:)([^,:]+):

试试这个。它给出了所有的匹配。参见演示。

http://regex101.com/r/pD5sV6/1

答案 1 :(得分:0)

您可以使用此正则表达式:

(?:^|,)([^:,\n]+):

为您的比赛抓住被抓获的第1组

RegEx Demo