提取并打印JavaScript中的子字符串



输入字符串:

<TagId>ABC</TagId><TagId>PQR</TagId></Tags>

所需输出:
ABC
PQR

迄今为止的尝试:

var myString = "<TagId>ABC</TagId><TagId>PQR</TagId></Tags>";
var count = ((myString.match(new RegExp("<TagId>", "g")) || []).length);
console.log(count); //Getting correct count of 2
for(var i =1;i<=count;i++){
var val = myString.substring(
myString.lastIndexOf("<TagId>") + 7, 
myString.lastIndexOf("</TagId>")
);
}
console.log(val);

上述代码段的实际结果:
PQR

您可以匹配后面跟有</TagId>:的非>字符

const str = '<TagId>ABC</TagId><TagId>PQR</TagId></Tags>';
console.log(str.match(/[^>]+(?=</TagId>)/g));

[^>]+(?=</TagId>)表示:

  • [^>]+-匹配一个或多个非>的字符
  • (?=</TagId>)-比赛结束后:
    • </TagId>-</TagId>已找到

如果您有领先的<Tags>,则可以更优雅地将其解析为XML:

const str = '<Tags><TagId>ABC</TagId><TagId>PQR</TagId></Tags>';
const doc = new DOMParser().parseFromString(str, 'text/xml');
for (const tagId of doc.querySelectorAll('TagId')) {
console.log(tagId.textContent);
}

我认为通过tagName循环可以检索内部文本内容。

var x =  document.getElementsByTagName("TagId");
for(let i = 0 ; i < x.length; i++) {
console.log(x[i].textContent)
}
<TagId>ABC</TagId><TagId>PQR</TagId></Tags>

最新更新