ホームページ  >  記事  >  バックエンド開発  >  指定された HTML タグのコードを削除するための asp.net 正規表現

指定された HTML タグのコードを削除するための asp.net 正規表現

高洛峰
高洛峰オリジナル
2017-02-03 15:14:111429ブラウズ

内部の HTML タグをすべて削除すると (a、img タグなど) 読みにくくなる可能性があるため、一部を削除し、一部を保持することをお勧めします。

正規表現では、特定の文字列かどうかを判断するのが非常に簡単です。理解できることですが、特定の文字列 (文字ではなく、何か、特定の文字列ではない) が含まれないかどうかを判断する方法は、確かに不可解です

<(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+>

この規則は、HTML タグに含まれないかどうかを判断することです。 li / ul / a / img / br / span / b を含む、上記の要件に関する限り、ここにリストされている以外の HTML タグを削除する必要があります。 ?!exp) の後に続くのは exp の位置ではありません
/?s? 最初は先頭の < の後に書こうとしましたが、テストは失敗しました

以下は TAG を連結する単純な関数です。を保持して正規表現を生成し、不要な TAG を削除してください...

private static string RemoveSpecifyHtml(string ctx) { 
string[] holdTags = { "a", "img", "br", "strong", "b", "span" };//要保留的 tag 
// <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+> 
string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@")|(/?\s?", holdTags)); 
Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); 


return reg.Replace(ctx, ""); 
}

訂正:

上記の正規表現の場合、li が保持されている場合、実際の操作ではリンクも保持されていることがわかり、意志が保持されます。解決策は、b アサーションを追加することです。

<(?!((/?\s?li\b)|(/?\s?ul)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+> 

private static string RemoveSpecifyHtml(string ctx) { 
string[] holdTags = { "a", "img", "br", "strong", "b", "span", "li" };//保留的 tag 
// <(?!((/?\s?li\b)|(/?\s?ul\b)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+> 
string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@"\b)|(/?\s?", holdTags)); 
Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); 

return reg.Replace(ctx, ""); 
}

指定された HTML タグを削除するための asp.net 正規表現コードについては、PHP の中国語 Web サイトを参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。