@-moz-document Regel = Ausnahme hinzufügen?

  • Habe ja auch so gut wie keine Ahnung von diesem ganzen CSS bzw. Skripte Kram.

    Der Einäugige unter den Blinden? :D

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Reguläre Ausdrücke sind eine ganz eigene Geschichte und gehören nicht wirklich zum Wissen über CSS oder JavaScript. Wenn man reguläre Ausdrücke versteht, kann man die auf beinahe jede Sprache anwenden, weil so ziemlich jede Sprache dieses Konzept kennt, auch wenn es je nach Sprache Unterschiede in den Details oder unterstützten Features geben kann. Die in diesem Fall einzige spannende Sache war das, was man als negative lookahead ((?!logins)) versteht, weil das das entscheidende Puzzle-Teil für die Ausnahmebedingung ist. Ansonsten ist das ein ziemlicher Basis-Ausdruck: ^ => kennzeichnet den Anfang, about: => ist der Teil aus der Adresse, der immer gleich sein soll, .* => findet einen beliebigen Text, der nach unserem definierten Teil (about:) folgt.

    Vor regulären Ausdrücken fürchten sich auch viele, welche die Sprache ihrer Wahl beherrschen. Das kann ja auch schnell unübersichtlich werden. Die Anwendungsfälle für einen regulären Ausdruck sind schließlich gerne komplexer. ;)

  • @-moz-document regexp('^about:(?!logins).*')

    Habe mal geforscht: ?!logins nennt sich offenbar negative lookahead assertion, die eben bewirkt, dass nach about: gesucht wird, dem logins nicht folgt.

    Assertions - JavaScript | MDN
    Assertions include boundaries, which indicate the beginnings and endings of lines and words, and other patterns indicating in some way that a match is possible…
    developer.mozilla.org

    Hier ist das das Muster x(?!y)

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Hallo Sören, danke auch für die Erklärung dazu

    Dem schließe ich mich an.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Danke auch von mir. regex hatte ich nicht ausgeschlossen, nur nie wirklich mit beschäftigt, nicht mal bei Programmen hier, das können. Oder Batch, in komplexeren Strukturen das anders und schneller. Was ich wohl weiss, dass das ! eine Negierung darstellt in manchen Sprachen. Allein bei /\d+(?!\.)/ bin ich nach dem ersten Zeichen schon überfordert (aus dem verlinkten MDN-Artikel).

    Wir sind keine Beschwerdestelle, hier gibt es nur Lösungen! Meine Glückszahl hier: 93.

  • Allein bei /\d+(?!\.)/ bin ich nach dem ersten Zeichen schon überfordert (aus dem verlinkten MDN-Artikel).

    Das / jeweils am Anfang und am Ende kannst du ignorieren. Der Artikel ist aus der JavaScript-Dokumentation und in JavaScript markiert dieses Zeichen den Anfang sowie das Ende des regulären Ausdrucks (danach könnten noch bestimmte „Flags“ folgen, beispielsweise zum Ignorieren der Groß-/Kleinschreibung). Mit \d wird eine Ziffer (0-9) gefunden, das + dahinter bedeutet mindestens eine oder auch mehr. Danach folgt der negative lookahead, sprich die Bedingung in Klammen nach dem ?! darf nicht zutreffen. Und die Bedingung ist ein Punkt. Da ein . in einem regulären Ausdruck normalerweise ein beliebiges einzelnes Zeichen meint, kommt davor noch ein \ als Escape-Zeichen, da wirklich das Zeichen Punkt gemeint ist. Der Ausdruck heißt also: eine Folge von Ziffern, auf die kein Punkt folgt. So würde /\d+(?!\.)/.exec('123.45') als Ergebnis 12 zurückliefern, weil das eine Folge von Ziffern ist und nach der 3 das Zeichen . folgt.