Заменить запятые между одинаковыми строками букв - PullRequest
2 голосов
/ 14 января 2020

Как заменить запятые только между одинаковыми начальными буквенными строками?

Вот что у меня есть, частично работая:

const regexA = /(A.+?)(, )(A)/g;
const regexB = /(B.+?)(, )(B)/g;

let value = "A1C, A2, A3B, A4, B1, B2A, B3".replace(regexA, '$1/$3');
value = value.replace(regexB, '$1/$3');
console.log(value); //prints A1C/A2, A3B/A4, B1/B2A, B3

Цель: A1C / A2 / A3B / A4, B1 / B2A / B3

Ответы [ 4 ]

2 голосов
/ 14 января 2020

const regexA = /((.)[^,]+), (?=\2|$)/g;

let value = "A1, A2, A3, A4, B1, B2, B3".replace(regexA, '$1/');
console.log(value); 

Демонстрация и объяснение

1 голос
/ 14 января 2020

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

const regexA = /((.)[^,]+), (?=\2)/ig;

let value = "A1, A2, A3, A4, B1, B2, B3".replace(regexA, '$1/');
console.log(value); 
0 голосов
/ 14 января 2020
  1. Обновлено выражение, чтобы соответствовать завершающему ,
  2. Добавлен трейлинг sla sh в .replace()
  3. Наконец заменено /, на ,, чтобы позаботиться дополнительного трейлинг-листа sh

const regexA = /(A.)(, )(A.)(, )/g;
const regexB = /(B.)(, )(B.)(, )/g;

let value = "A1, A2, A3, A4, B1, B2, B3".replace(regexA, '$1/$3/');

value = value.replace(regexB, ", $1/$3/");

console.log(value.replace(/\/, /g, ', ')); //prints A1/A2/A3/A4, B1/B2/B3
0 голосов
/ 14 января 2020

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

let value = "A1b, A2d, A3, A4, B1, B2, B3".replace(/([a-z])([^,]+),\s+(?=\1)/gi, '$1$2/');

console.log(value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...