Regex, чтобы удалить атрибут HTML из любого тега HTML (style = "") - PullRequest
7 голосов
/ 23 сентября 2011

Я ищу шаблон регулярного выражения, который будет искать атрибут в теге HTML.В частности, я хотел бы найти все экземпляры ...

style=""

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

Я использую Classic ASP для этого.У меня уже есть настройка функции для другого шаблона регулярных выражений, который ищет все теги HTML в строке и удаляет их.Работает отлично.Но теперь мне просто нужен другой шаблон для конкретного удаления всех атрибутов стиля.

Любая помощь будет принята с благодарностью.

Ответы [ 6 ]

30 голосов
/ 30 июня 2014

Возможно, более простое выражение -

 style="[^\"]*"

, поэтому все между двойными кавычками, кроме двойной кавычки.

18 голосов
/ 23 сентября 2011

Я думаю, что это может сделать это:

/style="[a-zA-Z0-9:;\.\s\(\)\-\,]*"/gi

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

/(style=")([a-zA-Z0-9:;\.\s\(\)\-\,]*)(")/gi

Рабочий пример: http://regexr.com? 2up30

1 голос
/ 27 ноября 2017

Я попробовал регулярное выражение Джейсона Дженнаро и немного изменил его

/style="[a-zA-Z0-9:;&\."\s\(\)\-\,]*|\\/ig

Это регулярное выражение фиксирует некоторые конкретные случаи со &quot внутри строки, например

 <div class="frame" style="font-family: Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div>
0 голосов
/ 07 марта 2019

Попробуйте, он заменит атрибут стиля и его значение полностью

const regex = /style="(.*?)"/gm;
const str = `<div class="frame" style="font-family: Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div>`;
const subst = ``;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);
0 голосов
/ 01 августа 2016

Это выражение работает для меня:

style=".+"/ig
0 голосов
/ 23 сентября 2011

Это работает с Perl.Возможно, вам нужно изменить регулярное выражение, чтобы оно немного соответствовало правилам ASP, но оно должно работать для любого тега.

$file=~ s/(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*".*?")([^<>]*>)/$1 $3/sig;

Где строка - HTML-файл.

Также это в .netC #

      string resultString = null;
      string subjectString = "<html style=\"something\"> ";

      resultString = Regex.Replace(subjectString, @"(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*"".*?"")([^<>]*>)", "$1 $3", RegexOptions.Singleline | RegexOptions.IgnoreCase);

Результат: <html >

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