使用 javascript 拆分具有正则表达式外观的字符串

Split a string with regular expression lookarounds using javascript

如果前一个字符不等于下一个字符,我想使用String.prototype.split拆分字符串,这是目标结果:

'abcd' => ['a', 'b', 'c', 'd']

'aaabbbccd' => ['aaa', 'bbb', 'cc', 'd']

我知道可以将字符串拆分为 lookbacks:

const result = 'aaabbbccd'.split(/(?<=a)/);
console.log(result);  // ["a", "a", "a", "bbbccd"]

所以我想找一个表达式来找到它的lookback不等于lookahead的两个字符的分隔符。

但是我试过了,还是不行:

const result = 'aaabbcccd'.split(/(?<!)(?=.)/);
console.log(result);  // ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd']

那么有正则表达式可以实现吗?或者用正则表达式根本不可能做到这一点?

使用反向引用,您可以使用 .match() 而不是 .split() 来获得您想要的结果,如下所示:

const r1 = 'abcd'.match(/(.)*/g);
const r2 = 'aaabbcccd'.match(/(.)*/g);
console.log(r1); // ['a', 'b', 'c', 'd']
console.log(r2); // ['aaa', 'bb', 'ccc', 'd']

这将匹配任意字符 (.),后跟相同字符 零次或多次