各開始コメントのIDを取得しようとしている次の正規表現があります。しかし、なぜか最初の一枚しか撮れません。ネストされたコメントの ID は取得されません。コンソールには 1000 しか表示されません。1000 と 2000 の両方を取得しようとしています。正規表現でエラーを見つけられる人はいますか?
<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>
Mike Samuel の回答に基づいて、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;
});
}
}