Regulärer Ausdruck von Word abgestürzt (2025)

Ähnlich wie dieses

Reproduktion

  • Überwachte Wörter-Reguläre Ausdrücke aktiviert
  • Überwachte Wörter-Tag-Aktion
  • Regulärer Ausdruck *abc

Ergebnis

Es ist unmöglich, Themen oder Beiträge zu erstellen

RegexpError (Ziel des Wiederholungsoperators ist nicht angegeben: /(*abc)/i)
app/services/word_watcher.rb:239:in `initialize'
app/services/word_watcher.rb:239:in `new'
app/services/word_watcher.rb:239:in `word_matches?'
lib/topic_creator.rb:214:in `block in setup_tags'
lib/topic_creator.rb:213:in `each'
lib/topic_creator.rb:213:in `setup_tags'
lib/topic_creator.rb:48:in `create'
lib/post_creator.rb:493:in `create_topic'

Ursache

  • * bedeutet „das vorherige Token null oder mehr Mal wiederholen“
  • Es gibt kein vorheriges Token
2 „Gefällt mir“

Sollte der Regex also wirklich validiert werden, bevor er hinzugefügt werden darf? Und es sollte eine Rettung geben, damit ein ungültiger Regex nicht die ganze Welt zum Absturz bringen kann?

1 „Gefällt mir“

Was hier offensichtlich passiert ist, war, dass die beobachteten Wörter reguläre beobachtete Wörter waren und * das Platzhalterzeichen war und dann watched words regular expressions enabled aktiviert wurde.

Also dies

1 „Gefällt mir“

Nun, jetzt ist es offensichtlich, wenn du es so sagst. :rofl:

Die Validierung von Regex beim Speichern scheint eine sehr sinnvolle Sache zu sein.

Ich markiere dies mit pr-welcome, aber das Team wird es prüfen und entscheiden, ob es in den kommenden Wochen sinnvoll ist, dies zu tun, um uns zukünftigen Support zu ersparen.

1 „Gefällt mir“

Das wird Leute nicht davon abhalten, „normale“ Wildcard-Ausdrücke einzugeben und dann watched words regular expressions enabled zu aktivieren, was hier passiert ist.

Ich denke, es braucht nur einen Exception-Handler um den regexp-Aufruf herum

  def word_matches?(word, case_sensitive: false)
    options = case_sensitive ? nil : Regexp::IGNORECASE
    Regexp.new(WordWatcher.word_to_regexp(word), options).match?(@raw)
  end
2 „Gefällt mir“

Danke für den Bericht @RGJ, das wird behoben durch

3 „Gefällt mir“

Dieses Thema wurde nach 10 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr möglich.