>  기사  >  백엔드 개발  >  지정된 HTML 태그의 코드를 삭제하는 asp.net 정규 표현식

지정된 HTML 태그의 코드를 삭제하는 asp.net 정규 표현식

高洛峰
高洛峰원래의
2017-02-03 15:14:111389검색

내부의 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, ""); 
}

수정:
위 정규식 표현식을 유지하면 실제 작업 중에도 링크가 유지됩니다. a를 유지하면 addr도 유지됩니다. 해결 방법은

<(?!((/?\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, ""); 
}

더 많은 asp.net 정규식을 추가하는 것입니다. 지정된 HTML을 삭제하려면 태그 코드 관련 기사는 PHP 중국어 사이트를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.