Регулярное выражение для удаления тегов HTML
Я использую следующее регулярное выражение для удаления тегов html из строки. Он работает, за исключением того, что я оставляю закрывающий тег. Если я попытаюсь удалить: blah , он оставляет . Я вообще не знаю синтаксиса регулярного выражения и пробовал это. Может кто-то с знаниями RegEx, пожалуйста, предоставьте мне образец, который будет работать. Вот мой код:
string sPattern = @"]*>"; Regex rgx = new Regex(sPattern); Match m = rgx.Match(sSummary); string sResult = ""; if (m.Success) sResult = rgx.Replace(sSummary, "", 1);
«Я использую . Регулярное выражение для удаления HTML-тегов» есть ваша проблема. Вместо этого используйте HTML-парсер.
Возможные дубликаты RegEx совпадают с открытыми тегами, за исключением автономных тегов XHTML — несмотря на заголовок, это является точной копией. Promise.
Поскольку другие люди не видят возможного варианта использования для этого, вот мое . а) работа в изолированной программной среде кода (Salesforce), где трудно, если не невозможно, включить и поддерживать стороннюю библиотеку б) только пытаясь убрать теги из тела письма для более чистого описания письма к делу (т. е. без проблем с безопасностью) c) метод stripHtmlTags () не сделал достаточной работы по удалению лишних тегов
13 ответов
Использование регулярного выражения для синтаксического анализа HTML чревато ошибками. HTML не является регулярным языком и, следовательно, не может быть на 100% корректно обработан регулярным выражением. Это всего лишь одна из многих проблем, с которыми вы столкнетесь. Лучший подход — использовать парсер HTML/XML, чтобы сделать это для вас.
Вот ссылка на сообщение в блоге, которое я написал некоторое время назад, в котором содержится подробная информация об этой проблеме.
Говоря это, вот решение, которое должно исправить эту конкретную проблему. Однако это не идеальное решение.
Джаред, это похоже на исключение, когда я пытаюсь это сделать. Кроме того, это удалит текст между тегами? По сути, я хочу удалить первые строки тегов a, p и img из строки.
Вам нужно заменить теги пробелами:
и уменьшите любые повторяющиеся пробелы в одиночные пробелы:
затем обрезать передние и конечные пробелы с помощью:
Смысл, что ваша функция удаления тега выглядит следующим образом:
function removeTags(string)< return string.replace(/<[^>]*>/g, ' ') .replace(/\s/g, ' ') .trim(); >
это отличный ответ, как бы вы изменили его, если бы вы хотели удалить все теги, включая текстовое содержимое тегов? просто оставить позади текст, который не был внутри тегов?
аааа, я понял это, я придумал: function removeTags (string)