Javascript 如何使用正则表达式从url中提取两个字符串?

Javascript 如何使用正则表达式从url中提取两个字符串?,javascript,regex,Javascript,Regex,我已经成功地匹配了一个字符串,但我需要拆分它并向URL添加一些新的段。如果正则表达式可以,如何匹配url并提取两个字符串,如下面的示例所示 当前结果: ["domain.com/collection/430000000000000"] 预期结果: ["domain.com/collection/", "430000000000000"] 当前代码: var reg=new RegExp('domain.com\/collection\/[0-9]+); var str='1〕http://l

我已经成功地匹配了一个字符串,但我需要拆分它并向URL添加一些新的段。如果正则表达式可以,如何匹配url并提取两个字符串,如下面的示例所示

当前结果:

["domain.com/collection/430000000000000"]
预期结果:

["domain.com/collection/", "430000000000000"]
当前代码:
var reg=new RegExp('domain.com\/collection\/[0-9]+);
var str='1〕http://localhost:3000/#/domain.com/collection/430000000000000?page=0&layout=grid';
console.log(str.match(reg))您想要的

将要提取的零件放入大括号中,如下所示,每个零件构成一个匹配组:

new RegExp('(domain.com\/collection\/)([0-9]+)') 
然后在匹配之后,您可以通过索引提取每个组的内容,索引0是整个字符串匹配,1是第一个组,2是第二个组,等等(感谢附录jcubic!)

这是通过正则表达式字符串上的
exec()
完成的,如下所述:


首先是整个匹配,然后组按照它们在模式中出现的顺序进行匹配。

您可以声明一个数组,然后用括号填充所需的值(因此,使用):

var reg=/(domain.com\/collection)\/([0-9]+)/g;
//         ^                      ^  ^      ^ 
var str='1〕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]);
}

控制台日志(arr)
如果
domain.com/collection/
始终是一个已知常数,那么为什么不干脆执行
的“domain.com/collection/430000000000000”。拆分('domain.com/collection/')
@vsync在id之后有东西。@jcubic-so?再分一次。演示一个场景,如果您may@vsync您将拥有
['http://localhost:3000/#“,”430000000000000?page=0&layout=grid']
。或
[”http://localhost:3000/#/“,”domain.com/collection/“,”430000000000000?page=0&layout=grid“]
如果保留拆分文本。@jcubic-不,我不会。。不管怎么说,哈希值在该数字之后,而不是之前,因此您再次拆分哈希值,或者后面可能出现的任何内容。。如果0索引始终与整个正则表达式匹配,则它将起作用。
/\d(\d)\d/.exec("123");
// → ["123", "2"]