[javascript] Regex를 사용하여 Javascript에서 HTML 태그 제거

Javascript의 문자열에서 모든 html 태그를 제거하려고합니다. 여기에 내가 가진 것이 … 왜 작동하지 않는지 알 수 없습니다 …. 내가 뭘 잘못하고 있는지 아는 사람 있나요?

<script type="text/javascript">

var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);

</script>

감사합니다!



답변

HTML의 문법이 너무 복잡해서 정규식이 100 % 정확하기에는 너무 복잡하다는 점에 유의하십시오.

var regex = /(<([^>]+)>)/ig
,   body = "<p>test</p>"
,   result = body.replace(regex, "");

console.log(result);

jQuery 와 같은 라이브러리를 사용하려면 다음과 같이 하면됩니다.

console.log($('<p>test</p>').text());


답변

이것은 오래된 질문이지만 우연히 발견하고 내가 사용한 방법을 공유 할 것이라고 생각했습니다.

var body = '<div id="anid">some <a href="link">text</a></div> and some more text';
var temp = document.createElement("div");
temp.innerHTML = body;
var sanitized = temp.textContent || temp.innerText;

sanitized 이제 다음이 포함됩니다. "some text and some more text"

간단하고 jQuery가 필요하지 않으며 더 복잡한 경우에도 실망하지 않아야합니다.


답변

이것은 나를 위해 일했습니다.

   var regex = /(&nbsp;|<([^>]+)>)/ig
      ,   body = tt
     ,   result = body.replace(regex, "");
       alert(result);


답변

TextAngular (WYSISYG Editor)가 수행하는 방법은 다음과 같습니다. 나는 또한 이것이 가장 일관된 대답 인 NO REGEX라는 것을 발견했습니다.

@license textAngular
Author : Austin Anderson
License : 2013 MIT
Version 1.5.16
// turn html into pure text that shows visiblity
function stripHtmlToText(html)
{
    var tmp = document.createElement("DIV");
    tmp.innerHTML = html;
    var res = tmp.textContent || tmp.innerText || '';
    res.replace('\u200B', ''); // zero width space
    res = res.trim();
    return res;
}


답변

undrescore.string.js 인 관리 문자열에 강력한 라이브러리를 사용할 수 있습니다.

_('a <a href="#">link</a>').stripTags()

=> ‘링크’

_('a <a href="#">link</a><script>alert("hello world!")</script>').stripTags()

=> ‘a linkalert ( “hello world!”)’

이 lib를 다음과 같이 가져 오는 것을 잊지 마십시오.

        <script src="underscore.js" type="text/javascript"></script>
        <script src="underscore.string.js" type="text/javascript"></script>
        <script type="text/javascript"> _.mixin(_.str.exports())</script>


답변

FuncJS라는 내 간단한 JavaScript 라이브러리에는 정규식을 입력하지 않고도 작업을 수행하는 “strip_tags ()”라는 함수가 있습니다.

예를 들어 문장에서 태그를 제거하고 싶다고 가정 해 보겠습니다.이 함수를 사용하면 다음과 같이 간단하게 수행 할 수 있습니다.

strip_tags("This string <em>contains</em> <strong>a lot</strong> of tags!");

그러면 “이 문자열에는 많은 태그가 포함되어 있습니다!”가 생성됩니다.

더 나은 이해를 위해 GitHub FuncJS 에서 문서를 읽으십시오
.

또한 원하는 경우 양식을 통해 몇 가지 피드백을 제공하십시오. 나에게 매우 도움이 될 것입니다!


답변

이것은 HTML 태그 및 & nbsp 등의 솔루션이며 HTML없이 텍스트를 가져 오기위한 조건을 제거 및 추가 할 수 있으며 임의의 것으로 대체 할 수 있습니다.

convertHtmlToText(passHtmlBlock)
{
   str = str.toString();
  return str.replace(/<[^>]*(>|$)|&nbsp;|&zwnj;|&raquo;|&laquo;|&gt;/g, 'ReplaceIfYouWantOtherWiseKeepItEmpty');
}