Auf meiner Website habe ich ein Kommentarfeld, in das die Leute schreiben können, was sie wollen. Um Spam und unserious Kommentare zu vermeiden, verwende ich einen Winkelfilter auf diese Weise:Verwendung eines einfachen Winkelfilters zum Ersetzen aller Vorkommen bestimmter Strings in der Eingabezeichenfolge, unabhängig von Groß- und Kleinschreibung
<span>{{comment | mouthWash}}</span>
Der Winkelfilter holt ein Array mit verbotenen Wörter und Scans durch die Eingabezeichenfolge und ersetzt alle Vorkommen der abgerufenen Wörter. Der Code für den Filter ist wie folgt:
app.filter('mouthWash', function($http) {
var badWords;
$http.get('js/objects/bad-words.json').success(function (data) {
badWords = data;
});
return function(input) {
angular.forEach(badWords, function(word){
var regEx = new RegExp(word);
input = input.replace(regEx, "mooh");
});
return input;
};
});
bad-words.json ist so etwas wie dieses:
["fuck", "ass", "shit", etc...]
So als Beispiel <span>{{ "fuck this" | mouthWash}}</span>
als ausgegeben wird <span>mooh this</span>
Dies ist funktioniert perfekt, außer dass ich weiße Räume ignorieren möchte, um sie kugelsicherer zu machen. Ich habe nicht viel Erfahrung mit Regex, also wenn jemand eine einfache Lösung dazu hätte, wäre ich wirklich dankbar.
Es tut mir leid, wenn meine Frage unklar war, aber das löst es nicht. Ich weiß nicht, ob Sie irgendwelche Erfahrungen mit Winkel haben, aber die Idee eines Filters ist, dass Sie Variablen filtern können und eine gefilterte Version der Variablen zurückgegeben wird. In Ihrem Beispiel wird die Eingabe weder geändert noch zurückgegeben. – tjespe