输入字符串:

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



  所需输出:
  美国广播公司
  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);
}

关于javascript - 在JavaScript中提取并打印SubString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60597947/

10-13 00:35