2017-01-08 10 views
0

In meinem Projekt kann ein Benutzer eine Zeichenfolge eingeben, die dann in der Ansicht in eine Schaltfläche übersetzt wird. HierAngularJS, Verwendung von Erfassungsgruppen in Regex

ist ein Beispiel für das, was ich geschehen wünschen:

Benutzertypen in: argumentation-link_to(80)

In der Ansicht, es sollte wie folgt aussehen:

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

Dies ist mein Code jetzt:

$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(' + match[0] + ')" class="btn btn-xs btn-info"> a link </button>' 
    })); 
}; 

Im Moment wird argumentation-link_to(80) wird prod UCE dies:

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

ich die Nummer 80 in argumentation-link_to(80) bekommen müssen Glück im Argument in goToArgumentation()

zu füllen, gibt Regex uns die Möglichkeit, Daten innerhalb der Regex mit der Erfassung Gruppen abzurufen. Wenn ich jedoch versuche, sie zu verwenden, erhalte ich den Fehler, dass die Regex nicht gültig ist. Using this site, habe ich versucht:

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

Hier habe ich versucht, ein, wo kein Fehler aufgetreten ist, aber ich konnte den Wert nicht erhalten:

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

Was ist der richtige Weg einfangenden Gruppen in Winkel js zu benutzen? Und wie würde ich auf sie verweisen?

+0

Verwenden '/ Argumentations-link_to \ ((\ d +) \)/I' und der Zugang über' Spiel [1] '. –

+0

@ WiktorStribiżew Wenn ich dies tue, gibt es zurück: Metaphysiker

Antwort

1

Um Einfanggruppen Sie() und die die exec() Funktion von RegExp zu verwenden:

$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>' 
    })); 
}; 
Verwandte Themen