2015-02-06 3 views
0

코드 스 니펫에서 일부 HTML 태그를 바꾸려고합니다. 예 : span 요소는 id가없는 경우 대체하지만 id가있을 때는 대체하지 않습니다.html 태그의 정규 표현식 캡처 단어

var sHTML = 'Text abc <span> text def '; 
sHTML = sHTML.replace(/<\s*\/*\s*span(.[^(id\=)]*){0,1}?>/ig, ''); 
alert(sHTML); 

잘못 작동합니다

여기 내 방법입니다! "id ="가 발생했을 때 바꿔서는 안되기 때문에 "i"나 "d"또는 "="과 같은 단일 문자가 나오는 경우에는 아무런 차이가 없어야하며 바꿔야합니다. 다른 말로하면 다음과 같습니다. var sHTML = 'Text abc <span id=MyId > text def '; span 요소에 ID가 있으므로 대체 할 것이 없으므로 그대로 유지해야합니다 (Text abc <span id=MyId > text def).

그러나 var sHTML = 'Text abc <span style="color:#00ff00;" > text def '; 의 경우 span 요소에 다음과 같은 ID가 없기 때문에 대체해야합니다. Text abc text def.

아이디어가 있으십니까? 미리 감사드립니다.

답변

1
<span (?![^>]*id)[^>]*>[ ]*|<\/span> 

보십시오. 데모를보십시오.

https://regex101.com/r/vD5iH9/82

var re = /<span (?![^>]*id)[^>]*>[ ]*|<\/span>/gim; 
var str = 'Text abc <span style="color:#00ff00;" > text def \'; \nText abc <span id=MyId > text def \nText <span color="red" >abc</span>'; 
var subst = ''; 

var result = str.replace(re, subst); 
+0

네, 그래요! 고맙습니다. – user3815508