我有以下正则表达式,我试图在其中捕获每个开始评论的 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;
});
}
}