Si vous supprimez toutes les balises HTML à l'intérieur, cela peut entraîner des difficultés de lecture (comme les balises a, img). Il est préférable d'en supprimer certaines et d'en conserver certaines
Dans les expressions régulières, c'est jugé. si une certaine chaîne est très facile à comprendre, mais comment juger si elle contient certaines chaînes (une chaîne, pas un caractère, quelque chose, pas un certain) est vraiment une chose déroutante
<(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+>
. Ceci La règle habituelle est de juger que la balise HTML ne contient pas li / ul / a / img / br / span / b. En ce qui concerne les exigences ci-dessus, il s'agit de supprimer les balises HTML à l'exception de celles répertoriées ici. est quelque chose que je tâtonne depuis longtemps.
(?!exp) correspond à une position qui n'est pas suivie par exp
/?s? mais le test a échoué.
Ce qui suit est une fonction simple qui enchaîne les TAG à conserver, génère une expression régulière, puis supprime les TAG inutiles...
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, ""); }
Correction :
Ce qui précède Régulièrement, si li est conservé, vous constaterez que le lien est également conservé pendant le fonctionnement réel. Conserver a conservera également l'adr. La solution est d'ajouter l'assertion 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, ""); }
Plus Règles régulières d'asp.net Veuillez faire attention au site Web PHP chinois pour les articles connexes sur l'expression permettant de supprimer le code de la balise HTML spécifiée !