Разрешить только часть HTML-тегов в текстовой области ASP.Net

0

Мне нужно разрешить определенные теги HTML в моем текстовом поле и игнорировать все другие теги. Например, <b> будет разрешено, но если <h1>, я хочу, чтобы тэг был заменен его внутренним текстом.

<b> некоторый текст </b> будет: некоторый текст и <h1> некоторый текст </h1> будет: некоторый текст

Я также хочу, чтобы все атрибуты были извлечены из всех разрешенных тегов.

Возможно ли это в регулярном выражении?

Обновление: я пробовал этот отрицательный lookahead <(?!b|br|p|i|u|sup|sub|br|ul|ol|li|a).*(\s[^>]*)?> Но он соответствует всему документу. было бы здорово, если бы кто-то мог исправить этот негативный взгляд.

Теги:
editor

1 ответ

0

Я нашел свой путь через это.

В случае, если кому-то это понадобится в будущем, это то, что я сделал.

        // 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню