如何重复模式并在Javascript正则表达式中提取内容

时间:2018-02-13 03:55:18

标签: javascript regex

我正在尝试做一些相当简单的事情,但之前我还没有与Regex进行过广泛的合作。

我正在尝试从另一个字符串中提取一些字符串。

我有字符串'value /:id /:foo /:bar'

我想在冒号之后和斜线之前提取每个字符串,例如:

let s = 'value/:id/:foo/:bar';
let r = new RegExp(/MAGIC HERE/);
// result r.exec(s)

我在这个网站上试了一个小时左右:https://regex101.com/但是只能接近这个:

:([a-z]+)

我也试过玩这些例子,但无法到达任何地方:

Regex match everything after question mark?

How do you access the matched groups in a JavaScript regular expression?

我希望能够无限地提取这些参数。

我的预期结果是得到每个参数的数组。

group 1 - id
group 2 - foo
group 3 - bar

请考虑解释有助于此的正则表达式我想了解如何在正则表达式中形成组。

3 个答案:

答案 0 :(得分:1)

'value/:id/:foo/:bar'.match(/:[a-z]+/g)

返回

[":id", ":foo", ":bar"]

答案 1 :(得分:0)

试试这个:



	let reg=/:(.*?)\/|:(.*?)$/g;
	let reg2=/:(.*?)\/|:(.*?)$/;
	let str='value/:id/:foo/:bar';
	let result=str.match(reg).map(v=>v.match(reg2)[1]?v.match(reg2)[1]:v.match(reg2)[2]);

	console.log(result);




答案 2 :(得分:0)

" /:" 这个正则表达式,不要尝试匹配分隔符之间的文本,而是分隔符' /:'。

我希望这有帮助...



let s = 'value/:id/:foo/:bar';
s = s.split("\/\:").splice(1).map((current, index) => `group ${index+1}: - ${current}`);
console.log(s);