내가 정규식 완전 초보 해요 따옴표가있는 자바 스크립트 정규식
단지 <br>
<br class="">
의 모든 모습을 대체 할 수있는 방법이 필요합니다,하지만 난 시도 :
str = str.replace(/<br\sclass=\"\"\s>/g, "<br>");
을하고 작동하지 않았다. 이 작업을 수행 할 수있는 적절한 정규식이 무엇
의 의 ?내가 정규식 완전 초보 해요 따옴표가있는 자바 스크립트 정규식
단지 <br>
<br class="">
의 모든 모습을 대체 할 수있는 방법이 필요합니다,하지만 난 시도 :
str = str.replace(/<br\sclass=\"\"\s>/g, "<br>");
을하고 작동하지 않았다. 이 작업을 수행 할 수있는 적절한 정규식이 무엇
의 의 ?정규식을 사용하지 않고 실제로 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;
get/set/removeAttribute는 IE의 다양한 빌드에서 버그가 있으며 가장 피해야합니다. 'className' DOM 속성을 수정하는 것이 바람직합니다. –
이것은 훨씬 더 나은 해결책입니다. 감사합니다. – Jesse
Opera 11에서 훌륭하게 작동합니다. IE6에서 불어납니다. – ridgerunner
\s
은 정확히 하나의 공백 문자와 일치합니다. \s*
이 공백 문자 수 (0 포함)와 일치하고 \s+
이 적어도 하나는 일치해야합니다.
str = str.replace(/'<br\s+class=\"\"\s*>/g, "<br>");
한 가지 방법은 다음과
var s = '<br class="">';
var n = s.replace(/(.*)(\s.*)(>)/,"$1$3");
console.log(n)
에 왜 이렇게할까요? 빈'class' 속성은 상처를주지 않습니다. –
'str = str.replace (/
/g, "
");' – ridgerunner