这个问题在这里已有答案:
我试图将任何字符串拆分为3个字符的子串列表。
例如:abcdefgh
分为:
abc , bcd , cde , def , efg , fgh
所以我写了以下正则表达式:
"abcd".match(/.{1,3}/g);
但它输出为abc , d
。如何实现上述输出?
由于不能重叠匹配,因此您需要使用禁止正则表达式引擎推进和使用字符串的内容。
答案很明确,特别是:积极向前看。它不会消耗字符串,并且可以在其中包含captuirng组,然后您可以访问该组。
使用这种模式:(?=([a-z]{3}))
。它断言,当前位置后面的是三个小写字母。因为它包裹在前瞻中,它不会在找到的三个字母后面前进。
结果,您将得到6个匹配,这将是空的,但每个匹配将包含捕获组,其中包含三个字母。