0

我有一个格式如下的变量字符串:id={ID}&sdv={sdvsdbsdb.:}

我需要获取两者之间的内容{ }并将其推送到表单组数组中。

我用来匹配这个的模式是\{([a-zA-Z\:\.]*?)\}

最初我使用的是一个更简单的正则表达式\{(.*?)\},但问题是如果你取id={ID}&sdv={sdvsdbsdb.:}并删除第一个},它将匹配从 first{到 first的整个字符串}

我用来执行此操作的功能是:

while ((matched_parameter = pattern.exec(redirect_string)) != null) {
    let redirect_found: boolean = false;
    for (let index in parameters.controls) {
        if (parameters.controls[index].value['key'] == matched_parameter[1]) {
            redirect_found = true;
            break;
        }
    }
    if (!redirect_found && matched_parameter[1] != '') {
            (<FormArray>this.form_group.get('parameters')).controls.unshift(this.form_builder.group({
                "key": matched_parameter[1],
                "internal": false,
                "source": "record",
                "field": "panelist_id",
                "varies_by_status": false
            }));
    }
}

这确实有效并匹配列表中已经没有的任何参数,但是当它说它添加到数组时,新值不会出现。

4

0 回答 0