carstens: RegExp Hilfe

Hallo,

seit einiger Zeit vesuch ich einen Ausdruck per .match zu überprüfen, komme aber nicht weiter:

es dürfen nur bestimmte Buchstaben vorkommen u.z. nur einmal dafür aber in beliebiger Reihenfolge

erlaubt sind z.B. nur die Buchstaben: acdfghijks

match: sdafgj
no match: sbdaafgjjx (weil: b, 2 mal a, 2 mal j, x)

habe da schon mal was probiert, aber entweder die RegExp akzeptiert doppelte Buchstaben oder besteht auf die Einhaltung der Reihenfolge.

Kann mir jemand dabei helfen?

Danke Carsten

  1. gudn tach!

    es dürfen nur bestimmte Buchstaben vorkommen u.z. nur einmal dafür aber in beliebiger Reihenfolge

    erlaubt sind z.B. nur die Buchstaben: acdfghijks

    match: sdafgj
    no match: sbdaafgjjx (weil: b, 2 mal a, 2 mal j, x)

    wenn du ums verrecken regexp einsetzen willst, obwohl das hier afais nicht geschickt waere, koenntest du ein pattern p = /[acdfghijks]/ anlegen, in einer schleife ueber die einzelnen zeichen des strings s jeweils pruefen, ob das aktuelle zeichen gematcht wird und anschliessend (immer noch innerhalb der schleife) jenes zeichen aus dem pattern entfernen.

    besser: kein regexp, sondern konventionelle string-funktionen, aber die gleiche idee.

    pseudo-code:
    // str = gegebener string
    erlaubt = 'acdfghijks'; // fasse erlaubt als array of chars auf
    for(i=length(str)-1; i>=0; --i){
      if(str[i] in erlaubt){
        erlaubt = erlaubt ohne str[i]
      }else{
        alert('moep!');
        break;
      }
    }

    das in js umzusetzen ist nicht so schwer. siehe selfhtml fuer string- und array-handling:
    http://de.selfhtml.org/javascript/objekte/string.htm
    http://de.selfhtml.org/javascript/objekte/array.htm

    prost
    seth