网址如下
在这种情况下,我需要从任何组件中获取p1,p2,p3。
我试图将正则表达式放在一起,但是在js控制台中它使我失败,但是在https://regexr.com/中它可以正常工作。
我得到了路由器类的网址
let url = this.router.url;
let partial = this.router.url.split ('(') [1]
let regex = /(\w)*:/g
let outlets = regex.exec(partial)
console.log(outlets) // you do not get all the matches
我需要从任何组件中获取所有辅助插座的名称,我以这种方式认为,我在正则表达式中遇到了问题。
如果有另一种方式获得我想要的东西,那将非常有用。
答案 0 :(得分:1)
我建议在(
字符后面加上/(?<=\().+/
使用正向后缀:
这可以在以下方法中看到:
const url = "http://localhost:4100/example/5b8c94cfc5f85728db8bddf2/5b8c94d0c5f85728db8bddf3/(p1:.....//p2:....//p3";
const regex = /(?<=\().+/;
console.log(url.match(regex)[0]);
或者,如果要分别捕获所有三个组,可以使用
/(?<=\()(.+(?=\/\/))\/\/(.+(?=\/\/))\/\/(.+)/
:
const url = "http://localhost:4100/example/5b8c94cfc5f85728db8bddf2/5b8c94d0c5f85728db8bddf3/(p1:.....//p2:....//p3";
const regex = /(?<=\()(.+(?=\/\/))\/\/(.+(?=\/\/))\/\/(.+)/;
console.log(url.match(regex));
这看起来很复杂,但是本质上是做同样的事情,只需在//
上添加前瞻,并重复该条件三次即可。