输入字符串:
<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/