각 시작 주석의 ID를 캡처하려고하는 다음 정규 표현식을 사용합니다. 그러나 웬일인지 나는 첫번째 사람을 붙잡을 수있다. 중첩 된 주석의 ID를 잡지 않습니다. 콘솔에 1000 인쇄합니다. 나는 그것을 모두 1000과 2000을 캡처 얻으려고. 누구든지 내 정규식에서 오류를 찾을 수 있습니까? 마이크 사무엘의 답변에 따라 Regex에서 텍스트에서 ID를 캡처하려면
<script type="text/javascript">
function ExtractText() {
var regex = /\<!--Start([0-9]{4})-->([\s\S]*?)<!--End[0-9]{4}-->/gm;
var match;
while (match = regex.exec($("#myHtml").html())) {
console.log(match[1]);
}
}
</script>
<div id="myHtml">
<!--Start1000-->Text on<!--Start2000-->the left<!--End1000-->Text on the right<!--End2000-->
</div>
나는 다음에 내 JS 업데이트 :
function GetAllIds() {
var regex = /<!--Start([0-9]{4})-->([\s\S]*?)<!--End\1-->/g;
var text = $("#myHtml").html();
var match;
while (regex.test(text)) {
text = text.replace(
regex,
function (_, id, content) {
console.log(id);
return content;
});
}
}
+1 나는 그것을 믿지 않았다, 그러나 그것은 작동합니다. –
@ p.s.w.g, 예. replacer 함수의 부작용은 다소 불쾌하지만 모든 겹치기 일치를 얻기위한 몇 가지 방법이 있습니다. 이전 반복을 반복적으로 일치시키고 제거합니다. 모든 접미사를'^'에 고정 된 정규식으로 일치 시키십시오. 또는 모든 접두사에 end-anchored ('$') 정규 표현식을 사용하십시오. –
흠 .. 1000과 2000 대신 두 번 1000 인쇄하는 것 같습니다. 그것은 가까이있어! 나는 끝에 여분의 괄호가 두 개 있다고 생각한다 – TGH