我從來不是正則表達式的專家,所以我需要一些幫助以下。正則表達式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