2010-01-07 5 views
1

나는 이런 식으로 HTML을 포함하는 자바 스크립트 문자열이 있습니다제거하는 방법 태그

<div> 
<div class="a"> 
    content1 
</div> 
content 2 
<div class="a"> 
    <b>content 3</b> 
</div> 
</div> 

을 나는 = "a"는하지만 콘텐츠를 떠나 클래스의 사업부 년대를 제거 할. 파이썬에서 내가 좋아하는 뭔가를 사용하는 것이 :

re.compile('<div class="a">(.*?)</div>', re.DOTALL).sub(r'\1', html) 

무엇 자바 스크립트 정규 표현식을 사용하여 상응하는 무엇입니까?

+5

여기에 우리가 다시 간다 ... HTML과 정규 표현식은 운명을위한 초대장이다. (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

+0

그러나 HTML은 서버 쪽에서 생성되므로 나 – hoju

+0

원하지 않는 태그가 없으면 왜 생성하지 않습니까? – Quentin

답변

2

당신은 자바 스크립트

에서 정규 표현식을 달성 할 수
var html = '<div> <div class="a"> content1 </div> <div class="a"> content1 </div> ... </div>'; 
var result = html.replace(/<div class="a">(.*?)<\/div>/g, function(a,s){return s;}); 
alert(result); 
두 개의 매개 변수를 replace

정규식 방법 - 첫 번째는 실제 다시 두 번째입니다 하나는 대체품입니다. 교체 횟수는 하나지만 알 수 없으므로 함수를 사용할 수 있습니다.

+0

+1하면 대체 할 함수를 전달할 수 있다는 것을 알지 못했습니다. –

+0

JavaScript에 알려지지 않은 저평가 된 기능이 많이 있습니다. Flanagan의 JavaScript Reference는이 분야에서 저를위한 진정한 시선이었습니다. – Andris

5

적절한 DOM 메소드를 사용하지 않는 이유는 무엇입니까? jQuery를의 도움으로, 그것은 죽은 간단합니다

var contents = $('<div><div class="a">content1</div>content 2<div class="a"><b>content 3</b></div></div>'); 

contents.find('.a').each(function() { 
    $(this).replaceWith($(this).html()); 
}); 
+0

이것은 질문에 대한 대답이 아닙니다. – egiray

0

자바 스크립트에서이 작업을 수행하려면 웹 브라우저에서 실행 중이며 참조하는 'javascript 문자열'이 DOM에서 일부 방식으로 추출되었다고 가정합니다. 이 두 가지 경우 모두 맞다면 JQuery와 같은 시도하고 테스트 한 자바 스크립트 라이브러리를 사용하는 것이 좋을 것이라고 말하고 싶습니다. (다른 것들도 있지만, 사용하지는 않습니다. 't 정말 언급이) JQuery와

$('div.a').each(function(){$(this).replaceWith($(this).html());}); 

JQuery와는 확실히 배당금을 지급하는 도구 중 하나입니다 ... 당신이 설명처럼이 상대적으로 쉽게, 온 - 더 - 플라이 DOM 조작을 수행 할 수 있습니다 - failry 짧은 학습 커브와 많은 힘.

+0

DOM을 조작하는 특정 유스 케이스가 너무 느립니다. – hoju

+0

다른 게시물에 대한 귀하의 의견에 따르면, 서버 측에서 마크 업을 생성하고 있지만 동적 클라이언트 측 기능을 원합니다. 알고있는 한 DOM을 조작하지 않고 끝내야한다. 내가 놓친 게 있니? – belugabob

+0

예,이 구문 분석 된 HTML을 빠른 업로드를 위해 제거 된 중요하지 않은 태그를 사용하여 서버로 다시 보냅니다. – hoju

관련 문제