Попробуйте:
var dis = BodyContent.replace(/([\s;{]color:)\s*[^\s;}]+/, "$1green");
Если вы не обрабатываете текст по одной строке за раз, нет необходимости специально обрабатывать перевод строки.Это просто еще один символ пробела, и вам нужно соответствовать любому из них;для этого \s
.Нет необходимости совпадать с началом строки, поэтому вам не нужен якорь ^
.
Однако вам следует разрешить открывающую скобку, если «color:» является первым объявлениемв правиле.Например:
H1{color:white;background-color:red;}
Кроме того, с учетом этого действительного правила:
H1{background-color:red;color:white }
... ваше регулярное выражение будет соответствовать ;color:white }
и заменить его на ;color:green
, что приведет к неверному CSS,Вот почему я изменил второй класс символов с [^;]
на [^\s;}]
.