2017-01-08 30 views
0

在我的項目中,用戶可以輸入一個字符串,然後在視圖中將其轉換爲按鈕。AngularJS,如何在正則表達式中使用捕獲組

下面是一個例子,什麼我想發生:

在用戶類型:argumentation-link_to(80)

在視圖中,它應該是這樣的:

<button ng-click="goToArgumentation(80)" 
    class="btn btn-xs btn-info"> a link 
</button> 

這是我的代碼此時此刻,argumentation-link_to(80)將生產UCE此:

<button ng-click="goToArgumentation(a)" 
    class="btn btn-xs btn-info"> a link 
</button> 

我需要在argumentation-link_to(80)80填寫論點goToArgumentation()

值得慶幸的是,正則表達式爲我們提供了與捕獲組檢索正則表達式中的數據的選項。但是,當我嘗試使用它們時,出現錯誤,表示正則表達式無效。 Using this site,我想:

/argumentation-link_to\((?<id>\d+)\)/i 
/argumentation-link_to\((?'id'\d+)\)/i 

在這裏,我試過一次,如果沒有出現錯誤,但我無法得到的值:

/argumentation-link_to\((?:\d+)\)/i 

什麼是使用捕獲組在角JS正確的方法是什麼?我將如何參考他們?

+0

使用'/論證-的link_to \((\ d +)\)通過'匹配/ i'和訪問[1]'。 –

+0

@WiktorStribiżew如果我這樣做,它會返回: Metaphysiker

回答

1

要使用捕捉組使用()和正則表達式的的exec()函數:

$scope.buttonmaker = function(haystack) { 

    needle = /argumentation-link_to\((\d+)\)/i; // <-- Regex 

    haystack = $sanitize(haystack); 

    return $sce.trustAsHtml(haystack.replace(new RegExp(needle, "gi"), function(match) { 
     console.log(match); 
     return '<button ng-click="goToArgumentation(' + needle.exec(match)[1] + ')" class="btn btn-xs btn-info"> a link </button>' 
    })); 
};