我已成功匹配字符串,但我需要将其拆分并向URL添加一些新段。如果可以通过正则表达式,如何匹配url并提取两个字符串,如下例所示?
目前的结果:
["domain.com/collection/430000000000000"]
期望的结果:
["domain.com/collection/", "430000000000000"]
当前代码:
var reg = new RegExp('domain.com\/collection\/[0-9]+');
var str = 'http://localhost:3000/#/domain.com/collection/430000000000000?page=0&layout=grid';
console.log(str.match(reg));
答案 0 :(得分:3)
将要提取的部分放入这样的大括号中,每个部分形成一个匹配组:
new RegExp('(domain.com\/collection\/)([0-9]+)')
然后在匹配之后,你可以通过索引提取每个组内容,索引0是整个字符串匹配,1是第一组,2是第二组等等(感谢附录,jcubic!)。
这是使用exec()
上的/\d(\d)\d/.exec("123");
// → ["123", "2"]
完成的,如here所描述的那样:
parentId
首先是整场比赛,然后小组按照它们在模式中出现的顺序进行匹配。
答案 1 :(得分:1)
您可以声明一个数组,然后使用括号捕获所需的值(因此,使用capturing groups)填充它:
var reg = /(domain.com\/collection)\/([0-9]+)/g;
// ^ ^ ^ ^
var str = 'http://localhost:3000/#/domain.com/collection/430000000000000?page=0&layout=grid';
var arr = [];
while ((m = reg.exec(str)) !== null) {
arr.push(m[1]);
arr.push(m[2]);
}
console.log(arr);

输出:["domain.com/collection", "430000000000000"]