2011-08-03 7 views
1

내가 정규식 완전 초보 해요 따옴표가있는 자바 스크립트 정규식

단지 <br>

의 와 <br class="">의 모든 모습을 대체 할 수있는 방법이 필요합니다,하지만 난 시도 :

str = str.replace(/<br\sclass=\"\"\s>/g, "<br>"); 

을하고 작동하지 않았다. 이 작업을 수행 할 수있는 적절한 정규식이 무엇

의 의 ?

+1

에 왜 이렇게할까요? 빈'class' 속성은 상처를주지 않습니다. –

+0

'str = str.replace (/
/g, "
");' – ridgerunner

답변

1

정규식을 사용하지 않고 실제로 html을 구문 분석하고 클래스를 제거합니다. 이것은 테스트되지 않았지만 작동합니다.

// Dummy <div> to hold the HTML string contents 
var d = document.createElement("div"); 
d.innerHTML = yourHTMLString; 

// Find all the <br> tags inside the dummy <div> 
var brs = d.getElementsByTagName("br"); 

// Loop over the <br> tags and remove the class 
for (var i=0; i<brs.length; i++) { 
    if (brs[i].hasAttribute("class")) { 
    brs[i].removeAttribute("class"); 
    } 
} 

// Return it to a string 
var yourNewHTMLString = d.innerHTML; 
+0

get/set/removeAttribute는 IE의 다양한 빌드에서 버그가 있으며 가장 피해야합니다. 'className' DOM 속성을 수정하는 것이 바람직합니다. –

+0

이것은 훨씬 더 나은 해결책입니다. 감사합니다. – Jesse

+0

Opera 11에서 훌륭하게 작동합니다. IE6에서 불어납니다. – ridgerunner

0

\s은 정확히 하나의 공백 문자와 일치합니다. \s*이 공백 문자 수 (0 포함)와 일치하고 \s+이 적어도 하나는 일치해야합니다.

str = str.replace(/'<br\s+class=\"\"\s*>/g, "<br>"); 
0

한 가지 방법은 다음과

var s = '<br class="">'; 
var n = s.replace(/(.*)(\s.*)(>)/,"$1$3"); 
console.log(n) 
관련 문제