JavaScript, как заменить строку с RegExp - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть эта строка

"red col.  yellow;   col.  black;  col.  green; orange; col. white; blue col. purple;"

, и мне нужно получить желтый, черный, зеленый, белый, фиолетовый цвета, только цвета без 'col.'а также ';'и измените эту строку следующим образом:

 "red col. < a>yellow<\a> ; col. < a>black<\a> ; col. < a>green<\a>; orange; col. <a>white<\a>; blue; col. < a>purple<\a>;"

как мне сделать это с помощью javascript reg exp, пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете использовать группу захвата для replace следующим образом: (Не уверен, что это самый эффективный способ)

const str = "red col.  yellow;   col.  black;  col.  green; orange; col. white; blue col. purple;"

const newStr = str.replace(/(?<=col.)(\s+)(\w+);/g, "$1<a>$2</a>;")

console.log(newStr)
0 голосов
/ 22 февраля 2019

используйте /\w+(?=;)/g для сопоставления слов, заканчивающихся ; и String.replace () , чтобы заменить совпадение на то, что вы хотите:

const str = 'red col.  yellow;   col.  black;  col.  green; orange; col. white; blue col. purple;';

const result = str.replace(/\w+(?=;)/g, match => '<a>' + match + '</a>');

console.log(result);

для определенных цветов:

const str = 'red col.  yellow;   col.  black;  col.  green; orange; col. white; blue col. purple;';

const colors = ["yellow", "black", "green", "white", "purple"];

const exp = new RegExp(colors.join('|'), 'g');

const result = str.replace(exp, match => '<a>' + match + '</a>');

console.log(result);
...