Dieses Thema erklärt, wie man reguläre Ausdrücke (Regex) effektiv in der Watched Words-Funktion von Discourse verwendet.
Für Websites, die bei uns gehostet werden, sind diese Einstellungen ausgeblendet. Kunden mit kostenpflichtigen Hosting-Plänen können unser Support-Team unter
team@discourse.orgkontaktieren, um Regex für Beobachtete Wörter anzufordern.
Hinweis: Diese Funktion ist auf unserem kostenlosen Hosting-Plan nicht verfügbar.Reguläre Ausdrücke (Regex) sind ein mächtiges Werkzeug zur Definition von Suchmustern. Sie können Regex in der Watched Words-Funktion verwenden, um die Genauigkeit und Flexibilität der Wortfilterung auf Ihrer Discourse-Website zu verbessern.
Um reguläre Ausdrücke (Regex) in beobachteten Wörtern zu verwenden, müssen Sie zuerst die Website-Einstellung
watched words regular expressionsaktivieren.
Regex ist extrem mächtig und daher gefährlich. Eine falsch geschriebene Regex-Anweisung kann Probleme für Ihre Benutzer verursachen. Testen Sie Ihre Regex-Anweisungen auf Nicht-Produktionsinstanzen, bevor Sie sie live schalten.
Beispiel-Regex-Muster
Hier sind einige gängige Regex-Muster und wie sie eingesetzt werden können:
Groß-/Kleinschreibung ignorieren
Standardmäßig gleicht Discourse sowohl Groß- als auch Kleinbuchstaben eines Wortes ab.
threadDies gleicht
thread,THREADundthReAdab.Zeichenalternativen
Verwenden Sie Zeichenalternativen, um Ihre Übereinstimmungen zu erweitern.
(t|7)hr(3|e)(4|a)dDies gleicht alle oben genannten Fälle ab, plus
thr3ad,7hreadundthr34d.
threads?\\S+Dies gleicht
threadundthreadsab, aber nichtthreadedoderthreading.Wortgrenzen
Regex-Muster können unbeabsichtigt Teile von Wörtern abgleichen. Verwenden Sie Wortgrenzen, um Teilübereinstimmungen zu vermeiden.
\bthreads?\bDies gleicht
threadundthreadsab, vermeidet aber Übereinstimmungen wiethreadlikeoderunthreading.Umgang mit Unicode-Zeichen
Standard-Wortgrenzen funktionieren bei Unicode-Zeichen möglicherweise nicht. Erstellen Sie Grenzen für Zeichen, die von JavaScript-Regex nicht gut behandelt werden.
gr(ü|ue)(ß|ss)eDies gleicht alle gängigen Schreibweisen des Wortes grüße ab – einschließlich
gruesseundGRÜSSEAngenommen, Sie möchten das Wort
Überblockieren, aber nichtÜbersicht. Die Verwendung von Wortgrenzen wie\b(ü|ue)ber\bfunktioniert nicht, da einige der JavaScript-Regex-Wort-Flags Unicode-Zeichen nicht verarbeiten. Stattdessen müssen Sie Ihre eigenen Grenzen erstellen.
(?:^|\s)(ü|ue)ber\bDies gleicht nun
Überundueberkorrekt ab, aber nichtÜbersichtoderuebersicht.Erfassen beabsichtigter Zeichensubstitutionen
Um Wörter zu erfassen, bei denen Benutzer Zahlen oder Sonderzeichen für Buchstaben ersetzen:
\bp[a@]ssw[o0]rd\bDies gleicht ab:
password,p@ssword,passw0rd,p@ssw0rd, aber nichtmypasswordoderpassword123Umgang mit Zeichen mit dazwischen liegender Interpunktion
Um Versuche zu erkennen, Filter durch das Einfügen von Interpunktion zu umgehen:
\bs\W*p\W*a\W*m\bDies gleicht ab:
spam,s.p.a.m,s-p-a-m,s_p_a_m, aber nichtspammyodermyspamMehrere Wortvariationen abgleichen
Zum Abgleichen von Phrasen, die in verschiedenen Wortformen auftreten können:
\b(contact|email|reach)( us| me)?\bDies gleicht ab:
contact,contact us,contact me,email us,email me,reach,reach us,reach meErkennen von E-Mail-Mustern
Um allgemeine E-Mail-Adressmuster zu erfassen:
\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}\bDies gleicht ab:
user@example.com,my.name@sub.domain.co.uk,user+tag@domain.orgFinden von Hashtag-Variationen
Um Hashtags mit unterschiedlicher Groß-/Kleinschreibung oder leichten Variationen abzugleichen:
\#(disc[o0]urse|f[o0]rum)\bDies gleicht ab:
#discourse,#DISCOURSE,#disc0urse,#forum,#f0rum, aber nicht#discourseengineoder#forumsErkennen sich wiederholender Muster
Um wiederholte Zeichen zu erfassen, die auf Spam-Inhalte hindeuten könnten:
([a-zA-Z])\1{3,}Dies gleicht ab:
aaaample,helllllo,yessssss, erkennt jeden Buchstaben, der 4 oder mehr Mal hintereinander wiederholt wirdURLs mit oder ohne Protokoll finden
\b(?:https?:\/\/)?[\w-]+(\.[\w-]+)+\bDies gleicht ab:
example.com,sub.domain.org,https://discourse.org,http://meta.discourse.orgVermeiden von verschachtelten Zeichenklassen
Korrekt:
(hold)?Dies gleicht das optionale Wort „hold“ korrekt ab
Oder wenn Sie Zeichenalternativen wünschen:
[h][o0][l1][d]Dies gleicht ab:
hold,h0ld,ho1d,h01dFalsch:
[h[o0][l1]d]?Dies versucht fälschlicherweise, Zeichenklassen zu verschachteln, und gleicht jedes einzelne Zeichen aus
h,o,0,l,1oderdab, was dazu führt, dass Wörter wiehad,oldusw. abgeglichen werden.Verwendung von Klammern für optionale Wörter
Korrekt:
forum(s)?Dies gleicht korrekt ab:
forum,forumsFalsch:
forum[s]?Dies gleicht „forum“ gefolgt von einem optionalen „s“ ab, verwendet aber unnötigerweise eine Zeichenklasse.
Korrekte Verwendung von Zeichenklassen
Korrekt:
bad wordUm den Ausdruck „bad word“ abzugleichen
Oder als Beispiel für eine Zeichenklasse:
[bB][aA][dD]Dies gleicht ab:
bad,Bad,bAd,BADusw.Falsch:
[bad word]Dies gleicht jedes einzelne Zeichen aus
b,a,d,w,o,roderdab, nicht den Ausdruck „bad word“.Effektive Verwendung von Quantifizierern
\b[0-9]{3,5}\bDies gleicht Zahlen mit 3 bis 5 Ziffern ab:
123,1234,12345, aber nicht12oder123456Für spezifische sich wiederholende Muster:
(spam){2,3}Dies gleicht ab:
spamspam,spamspamspamKorrektes Anwenden von Wortgrenzen
Ohne Grenzen:
freeDies gleicht ab:
free,freedom,carefreeMit Grenzen:
\bfree\bDies gleicht nur ab:
free, aber nichtfreedomodercarefreeKorrekter Umgang mit Unicode-Zeichen
Korrekter Ansatz:
(?:^|\s)(ö|oe)zel\bDies gleicht ab:
özel,oezelan Wortgrenzen, auch bei Unicode-ZeichenFalscher Ansatz:
\bözel\bDies funktioniert möglicherweise nicht korrekt mit dem türkischen Zeichen ö.
Zusätzliche Informationen
Sie können Regex-Ausdrücke unter https://regex101.com/ testen. Stellen Sie dort sicher, dass Sie die Regex-Sprachversion auf ECMAScript umstellen.
Regex-Erfassung und -Ersetzung werden in Watched Words nicht unterstützt, nur das Abgleichen. Daher funktioniert dies nicht bei den Aktionen „link“ oder „replace“.
13 „Gefällt mir“
Verzeihen Sie meine Unwissenheit, aber ich konnte die Website-Einstellung für watched words regular expressions nirgends finden. Ich habe auch nach regex, regular expression und anderen Varianten gesucht, aber nichts gefunden, das so aussah, als würde es Regex für beobachtete Wörter aktivieren. Haben Sie den Slug zu den Website-Einstellungen, wo dies aktiviert werden kann (Cloud-gehostete Instanz)?
EDIT Die Antwort war direkt darüber und hier gefunden: https://meta.discourse.org/t/hidden-settings-on-discourse-hosted-sites/310574
2 „Gefällt mir“