Javascript 如何使用正则表达式从url中提取两个字符串?
我已经成功地匹配了一个字符串,但我需要拆分它并向URL添加一些新的段。如果正则表达式可以,如何匹配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
["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"]