Я хочу использовать String.prototype.split для разделения строки, если предыдущий символ не равен следующему, вот целевой результат:

‘abcd’ ={amp}gt; [‘a’, ‘b’, ‘c’, ‘d’]

‘aaabbbccd’ ={amp}gt; [‘aaa’, ‘bbb’, ‘cc’, ‘d’]

Я знаю, что можно разбить строку только с помощью lookbacks :

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

Поэтому я хотел найти выражение, чтобы найти разделитель из двух символов, чтобы его обратный просмотр не равнялся прогнозному.

Но я попробовал это, и это не работает:

 const result = 'aaabbcccd'.split(/(?{amp}lt;!2)(?=.)/); console.log(result); // ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd'] 

Так есть ли регулярное выражение для достижения этой цели? Или это просто невозможно сделать с помощью регулярных выражений?

Используя .match() , вы можете использовать .match() вместо .split() чтобы получить желаемый результат следующим образом:

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

Это будет соответствовать любому символу (.) , За которым следует один и тот же символ 1 ноль или более раз