Регулярное выражение для удаления атрибута HTML из любого тега HTML (style="")?
Я ищу шаблон регулярного выражения, который будет искать атрибут в теге HTML. В частности, я хотел бы найти все примеры ...
style=""
... и удалите его из HTML-тега, в котором он содержится. Очевидно, это будет включать в себя все, что содержится с двойными кавычками, а также.
Для этого я использую классический ASP. У меня уже есть функция настройки для другого шаблона регулярных выражений, которая ищет все теги HTML в строке и удаляет их. Это прекрасно работает. Но теперь ... Мне просто нужен другой шаблон для конкретного удаления всех атрибутов стиля.
Любая помощь будет весьма признательна.
5 ответов:
Я думаю, что это может сделать:
/style="[a-zA-Z0-9:;\.\s\(\)\-\,]*"/giВы также можете поместить их в группы захвата, если хотите заменить только некоторые части
/(style=")([a-zA-Z0-9:;\.\s\(\)\-\,]*)(")/giРабочий пример: http://regexr.com?2up30
Возможно, более простым выражением является
style="[^\"]*"Итак, все между двойными кавычками, кроме двойной кавычки.
Это работает с perl. Возможно, вам нужно немного изменить регулярное выражение, чтобы оно соответствовало правилам ASP, но оно должно работать для любого тега.
$file=~ s/(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*".*?")([^<>]*>)/$1 $3/sig;Где строка-это html-файл.
Также это в .net C#
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 >
Я попробовал регулярное выражение Джейсона Дженнаро и слегка изменил его
/style="[a-zA-Z0-9:;&\."\s\(\)\-\,]*|\\/igЭто регулярное выражение захватывает некоторые конкретные случаи с
"внутри строки, например<div class="frame" style="font-family: Monaco, Consolas, "Courier New", monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div>
Comments