我需要从字符串中提取id,但我不仅仅是ID。我正在尝试使用一种在Java中运行良好的模式,但在JS中它产生的结果比我喜欢的更多。这是我的代码:
var reg = new RegExp("&topic=([0-9]+)");
对字符串“#p = activity-feed& topic = 1697”
执行此操作时var results = reg.exec("#p=activity-feed&topic=1697");
我希望得到数字部分(在这种情况下为1697),因为这之前是“& topic =”,但这会返回两个匹配项:
0: "&topic=1697"
1: "1697"
有人可以帮我从字符串["1967","9999"]
获取"#p=activity-feed&topic=1697&no_match=1111&topic=9999"
吗?
答案 0 :(得分:1)
假设浏览器支持适合您的用例,URLSearchParams
可以为您完成所有解析:
var params = new URLSearchParams('p=activity-feed&topic=1697&no_match=1111&topic=9999');
console.log(params.getAll('topic'));
答案 1 :(得分:0)
虽然Noah的答案可以说更加强大和灵活,但这是一个基于正则表达式的解决方案:
var topicRegex = /&topic=(\d+)/g; // note the g flag
var results = [];
var testString = "p=activity-feed&topic=1697&no_match=1111&topic=9999";
var match;
while (match = reg.exec(testString)) {
results.push(match[1]); // indexing at 1 pulls capture result
}
console.log(results); // ["1697", "9999"]
适用于字符串中任意数量的匹配或位置。请注意,匹配仍然是字符串,如果您想将它们视为数字,则必须执行以下操作:
var numberized = results.map(Number);