Мне нужно разрешить определенные теги HTML в моем текстовом поле и игнорировать все другие теги. Например, <b> будет разрешено, но если <h1>, я хочу, чтобы тэг был заменен его внутренним текстом.
<b> некоторый текст </b> будет: некоторый текст и <h1> некоторый текст </h1> будет: некоторый текст
Я также хочу, чтобы все атрибуты были извлечены из всех разрешенных тегов.
Возможно ли это в регулярном выражении?
Обновление: я пробовал этот отрицательный lookahead <(?!b|br|p|i|u|sup|sub|br|ul|ol|li|a).*(\s[^>]*)?>
Но он соответствует всему документу. было бы здорово, если бы кто-то мог исправить этот негативный взгляд.
Я нашел свой путь через это.
В случае, если кому-то это понадобится в будущем, это то, что я сделал.
// remove HTML comments
Regex regex = new Regex(@"<!--[^-]*-->", RegexOptions.IgnoreCase);
input = regex.Replace(input, "");
// remove unsupported tags
regex = new Regex(@"</?((?!p|i|u|sup|sub|br|ol|li|a|b|/)|((p|i|sup|sub|br|ul|ol|li|a|b)[^<>\s]+))[^<>]*?>", RegexOptions.IgnoreCase);
input = regex.Replace(input, "");
// remove attribiutes
regex = new Regex(@"(<[^\s]+)(\s[^<>]*)(>)", RegexOptions.IgnoreCase);
input = regex.Replace(input, m => m.Groups[1].Value + m.Groups[3].Value);
return input;