在特定字符之前捕获单词

时间:2014-09-18 17:29:20

标签: javascript regex

我需要创建一个javascript正则表达式,它将捕获单个或双:之前的“单词”。

以下是一些例子:

*, ::before, ::after // do not capture anything
.class1, .class2:before,.class3::after // captures .class2 and .class3
.class4::before // captures .class4

This is what I have right now: /(\S+?):/g。它会将任何非空格字符与无穷小时间匹配为尽可能少的次数,然后停在:处。

除了:

之外
  1. 如果“单词”之前没有空格,则会捕获太多。
  2. 它捕获::before::after的第一个冒号。

2 个答案:

答案 0 :(得分:0)

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

 ([.\w]+):?:\w+

<强> Working demo

enter image description here

根据需要,这个正则表达式可以:

([.\w]+)      Captures alphanumeric and dots strings before
:?:\w+        one or two colons followed with some alphanumeric

匹配信息:

MATCH 1
1.  [57-64] `.class2`
MATCH 2
1.  [72-79] `.class3`
MATCH 3
1.  [119-126]   `.class4`

答案 1 :(得分:0)

只需添加一个额外/可选:到最后:

/(\S+?)::?/g

或者您可以将此指定为重复1-2次:

/(\S+?):{1,2}/g

Demo