如何终止捕获

时间:2015-03-18 13:48:35

标签: javascript regex

我有一个像这样的字符串 __data__transition_fadeIn_phase1____transition_fadeOut_phase1__ 我想捕获fadeIn_phase1和fadeOut_phase1

我有很多尝试,包括/transition_(\w+)__(?:$|(?:__trans\w*))/g,但它只捕获fadeIn_phase1____transition_fadeOut_phase1__

有没有办法捕获两者?

我意识到我必须使用while循环...

        while (matches = pattern.exec(Object.keys(selection).join(""))) {
            keys.push(matches[1])
        }

1 个答案:

答案 0 :(得分:1)

您可以在此处使用non-greedy匹配。

/transition_(\w+?)__/g

示例:

var str = '__data__transition_fadeIn_phase1____transition_fadeOut_phase1__'
var re  = /transition_(\w+?)__/g, 
keys = [];

while (m = re.exec(str)) {
  keys.push(m[1]);
}

console.log(keys) //=> [ 'fadeIn_phase1', 'fadeOut_phase1' ]