JavaScript의 정규 표현인 Replace에 중첩된 div를 플랫화(flatten)하여 작은 요소가 없는 div를 제거합니다.
27442 단어 JavaScript정규 표현식tech
npm 패키지를 사용하면 쉽게 완성할 수 있을 것 같아요.
CDN에서 책갈피를 읽고 싶지 않을 뿐입니다.
TL;DR
반복
targetString.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
몇 번반복
targetString.replace(/<div>\s*<div>([^>]*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
몇 번왜 그랬어
책갈피 만드는 중
리플렉스로 어떻게든 해보고 싶어서 했어요.
어떻게 해야만 각자의 정규 표현식에 도달할 수 있습니까
정규 표현식 체크카드로 생각하면서 괜찮은 웃음.
추천하는 정규 표현 검사는 이 두 가지다.
중첩된 div 플랫화(flaten)
일단 평탄화라는 표현이 맞는지 모르겠어요.
예를 들다
이런 HTML
<div><div><div><div>foo</div></div></div></div>
<div>
<div>
<div><div>bar</div></div>
</div>
</div>
<div><div>baz</div></div>
이렇게 하고 싶어요.<div>foo</div>
<div>bar</div>
<div>baz</div>
마침내 도착한 것은반복
targetString.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
이런 방법으로 코드는 이렇게 하는 것이다.더러워..😂targetString
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
.replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>");
기타targetString
.replace(/<div>\s*<div>\s*<div>(.*)<\/div>\s*<\/div>\s*<\/div>/gs, "<div>$1</div>");
이렇게 여러 개의 플러그를 단숨에 간단한div링으로 변환할 수 있다이 정규 표현식이라면 플러그인 모드를 준비해야 합니다
몇 번 반복하면 기본적으로 문제가 없기 때문에 나는 끼워 넣는 것을 취소하기로 결정했다.
2010/12/23 추기
@catnose라는 댓글이 왔어요.
replace(/<div>\s*<div>(.*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
의 부분은 이것이라면 끼워 넣을 때 폐쇄 라벨</div>
이 일치하지 않을 수 있습니다.그래서
text.replace(/<div>\s*<div>([^>]*)<\/div>\s*<\/div>/gs, "<div>$1</div>")
듣건대사용법
while
을 제시했으니 댓글을 달아보세요.replace의
replace(/../gs,'')
이 부분의 sES 2018년 이후의 선택이다.Can i use .. 대부분의 브라우저가 이미 대응한 것 같다.
s("dotAll") 플래그가 진짜로 설정된 경우 줄 바꿈도 일치합니다.
다차원 배열을 일차원 배열로 바꾸는 평탄화(flaten)와 좀 닮았기 때문이다.
작은 요소 없음div 삭제
<div></div>
<div><div></div></div>
<div><div><div></div></div></div>
이런 거 없애고 싶어요.도착하는 정규 표현식은
반복
targetString.replace(/<div>\s*<\/div>/g, "")
그리고 코드는 이렇습니다.이것도 더러워..😂targetString
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "")
.replace(/<div>\s*<\/div>/g, "");
이것도 겹쳐서 여러 개의div 부분을 바꿀 수 있어요.나는 우직한 방법이 비교적 간단하다고 생각해서 이렇게 한다.
더 좋은 방법이 있으면 알려주세요.😂
Reference
이 문제에 관하여(JavaScript의 정규 표현인 Replace에 중첩된 div를 플랫화(flatten)하여 작은 요소가 없는 div를 제거합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/junki555/articles/84693b36e049dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)