regexjavascript-url结构

regexjavascript-url结构,javascript,regex,Javascript,Regex,我从来都不是正则表达式专家,所以我需要以下方面的帮助 我有以下字符串:”(/(/(/))”。 这是一种url结构。 我想提取:“param1”、“param2”、“param3”、“param4”,并检查它们是否是可选的。 如果参数在括号中(本例中为param2、param3和param4),则该参数是可选的 提前感谢。这可能会帮助您: var str = '<param1>(/<param2>(/<param3>(/<param4>)))'; v

我从来都不是正则表达式专家,所以我需要以下方面的帮助

我有以下字符串:
”(/(/(/))”
。 这是一种url结构。 我想提取:“param1”、“param2”、“param3”、“param4”,并检查它们是否是可选的。 如果参数在括号中(本例中为param2、param3和param4),则该参数是可选的

提前感谢。

这可能会帮助您:

var str = '<param1>(/<param2>(/<param3>(/<param4>)))';
var optionnals = str.match(/\/<\w+>/g).map(function(s) { return s.replace(/\/<(\w+)>/, "$1"); });
var str='(/(/(/))';
var optionnals=str.match(//\//g).map(函数{返回s.replace(//\//,“$1”);});
但是可能很难进行深度/递归匹配。

可能没有regex

var str = 'param1/param2/param3/param4';
var res = str.split('/');
这项工作:

//var str = '<param1>';
//var str = '<param1>(/<param2>)';
//var str = '<param1>(/<param2>(/<param3>))';
var str = '<param1>(/<param2>(/<param3>(/<param4>)))';

var result = str.match(/^<(.*?)>(?:\(\/<(.*?)>(?:\(\/<(.*?)>(?:\(\/<(.*?)>\))?\))?\))?/);

console.log(result[1]); //param1
console.log(result[2]); //param2
console.log(result[3]); //param3
console.log(result[4]); //param4
//var str='';
//var-str='(/)';
//var str='(/(/)';
var str='(/(/(/))';
var result=str.match(/^(?:\(\/(?:\(\/(?:\(\/\))?\))?/);
console.log(结果[1])//参数1
console.log(结果[2])//参数2
console.log(结果[3])//param3
console.log(结果[4])//param4

这似乎最好作为解析器,而不是使用正则表达式。您希望循环遍历每个角色,每次点击
并在点击
时弹出)时将关卡推到“堆栈”上。如果堆栈不是空的,则有一个可选参数。是的,您是对的。最好为此编写一个解析器。谢谢