我从来不是正则表达式的专家,所以我需要一些帮助以下。正则表达式javascript - url结构
我有以下字符串:'<param1>(/<param2>(/<param3>(/<param4>)))'
。 这是一种url结构。 我想提取:'param1','param2','param3','param4'并检查它们是否可选。 参数在括号中是可选的(在这种情况下为param2,param3和param4)。
在此先感谢。
我从来不是正则表达式的专家,所以我需要一些帮助以下。正则表达式javascript - url结构
我有以下字符串:'<param1>(/<param2>(/<param3>(/<param4>)))'
。 这是一种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 = '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
这似乎是它会作为一个解析器做得更好,不使用正则表达式。你想循环遍历每个角色,每次你点击一个按钮时,都会将一个关卡推到一个“堆栈”上(如果你点击一个'',则会弹出')。如果堆栈不是空的,你有一个可选的参数。 – GregL 2012-02-20 08:50:48
是的,你是对的。为此编写解析器会更好。谢谢! – 2012-02-20 09:15:17