如何使用regexp进行嵌套匹配?

时间:2015-08-02 18:50:45

标签: javascript regex

我需要匹配一组单词,然后匹配找到的单词中的另一个组。我怎么能用regexp做到这一点?这样做的一般方法是什么?

例如,我需要找到超过8个字母的单词,然后将这些单词拆分为4个字母的组,以便我可以使用javascript插入短划线或任何其他符号。

所以,如果我的文字是:

A full Reference & Help is available in the Library, or watch the video Tutorial.

我的正则表达式必须匹配

['Refe', 'renc', 'avai', 'labl', 'Tuto', 'rial']

我知道我可以选择类似/[a-z]{8,}/ig之类的长字,然后我需要应用像/[a-z]{3}/ig之类的东西。那么如何将两者结合起来呢? 如果我只是做/([a-z]{8,})[a-z]{4}/ig,它并没有给我正确的匹配。

1 个答案:

答案 0 :(得分:1)

对于这种特殊情况,您可以使用lookaround

/(?<=[a-z]{4})[a-z]{4}|[a-z]{4}(?=[a-z]{4})/ig

但是JS没有外观。

一般情况下,您只需匹配8个或更多字母的单词,然后在第二步中对每个匹配项进行自定义处理:

str.replace(/[a-z]{8,}/ig, function(match) {
    return match.replace(/[a-z]{4}(?=[a-z])/ig, "$&-"); // or whatever
});