我想編寫一個函數,例如:提取值給出一個簡單的模板
function extract(template, example){
//some magic
return obj;
}
,鑑於類似下面的輸入:
var template = "/some/path/{param_one}/{another_param}/etc?arg1={value}";
var example = "/some/path/foo/bar/etc?arg1=baz";
將返回該對象:
{param_one: "foo", another_param: "bar", value: "baz"}
我對模板和示例沒有控制權(例如,我不能將模板更改爲re gex與命名捕獲組)。我可以安全地假設的是,給定的例子將匹配模板。
作爲一個開始,我能夠用這種提取鍵:
var re = /\{(.+?)\}/g;
var match;
do {
match = re.exec(template)
if (match) {
console.log(match[1]);
}
} while (match);
的問題沒有得到很好的指定splited參數數組和匹配值。 'template =「{param_one} {param_two}」的結果是什麼? example =「abc」;'?或者'template =「{param_one}/{param_two}」; example =「///」'?如果你的輸入總是url路徑+查詢,那麼它將是可以解決的。 –
@le_m,你是對的。你可以假定它總是一個路徑和查詢,並且兩個模板變量總是至少用'/','''或'&分開。儘管也應該接受以下內容:'{param_a}/prefix {param_b} /' – Seba