2015-03-03 2 views
1

я приступаю к этим двум замещают запросов (называемых по JavaScript), чтобы обработать случай, в котором стиль цвета CSS будет помещен в конце атрибута стиля, без запятой ...Можно ли объединить два регулярных запроса?

replace(/\bstyle=["|'](.*)(?:color:.*?;)(.*)["|']/gi, 'style="$1$2"') 
replace(/\bstyle=["|'](.*)(?:color:.*["|'])/gi, 'style="$1"') 

Было бы быть более симпатичным, чтобы объединить их ... Однако я провел часы без успеха!

EDIT: вот образец текста:

Lorem ipsum <span style="font-style:italic; color: blue; font-weight: bold;">dolor sit amet</span>, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim <span style="font-style:italic; font-weight: bold; color: blue">ad minim veniam</span>, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+1

Ума, что проблемы могут возникнуть с это, например, если вы код 'bstyle =" foo "bar =" color: foo "', он будет соответствовать 'foo 'bar =" color: foo'. Вам лучше использовать недобросовестные матчи, которые я думаю ... –

+1

Не могли бы вы разместить образец текста, который должны соответствовать этим шаблонам? –

+1

Не пытайтесь манипулировать HTML и атрибутами стиля с помощью HTML. Используйте инструменты и API, предназначенные для этой цели. –

ответ

0

Это следует сделать это:

replace(/\bstyle(=["'].*)(?:color:.*?;(.*)["']|color:[^;]*?["'])/gi, 'style$1$2'); 
+0

Спасибо, отлично! Я пробовал что-то очень похожее, но без [^;] ... – Varlin

0

Похоже, вы пытаетесь удалить color от стиля. я думаю, а не реконструировать style, было бы лучше, чтобы удалить color, по

replace(/\bcolor:[^;'"]*;?/gi, '');  //updated from [^; ] to [^;'"] 

это, чтобы заменить все от color до ; или space к ""

+0

Ваше регулярное выражение не получает значения после двоеточия. – Varlin

+0

Но он работает с '(? :(color: [^" '] * ?;) | (color:. *?) ["'])' – Varlin

+0

Этот: '\ bcolor: [^;" '] * ;? ' – Varlin

Смежные вопросы