Unterschiedliche reguläre Ausdrücke verarbeiten

  • Hallo Zusammen!


    Ich möchte mit einer Funktion mehrere reguläre Ausdrücke überprüfen. Der Input entspricht in der Regel einem Standard. Jedoch kommt es manchmal vor, dass ein Input von diesem Standard abweicht und man dafür einen neuen regulären Ausdruck generieren muss.
    Dies möchte ich in einer Funktion ralisieren.


    Ich hab auf jsFiddle mal ein Beispiel gemacht: http://jsfiddle.net/Schmakus/absjd4rx/18/


    Mein Besipiel funktioniert, ist jedoch nicht besonders Anwenderfreundlich, sofern noch mehrere Ausdrücke hinzukommen.


    Nun soll das ganze natürlich einfach zu pflegen sein, d.h. am besten wäre eine Auflistung der regulären Ausdrücke nacheinander, so dass immer neue Ausdrücke hinzugefügt werden können.
    Die Funktion soll dann nach Möglichkeit einen ausdruck nach dem anderen prüfen.
    Sobald eine Übereinstimmung stattfindet, wird diese via

    JavaScript
    return

    ausgespuckt.


    Vielen Dank für eure Hilfe!


    Gruß
    Schmakus

  • Hi, super das funktioniert.
    Hatte auch schon den Gedanken mit dem Array, bin aber noch nicht dazugekommen, es zu probieren, bzw. hätte sowieso meine Probleme mit der Schleife gehabt.


    Nun aber möchte ich ein Stück weiter gehen.


    Wenn ich nun ein mehrstufiges Array verwende, um noch die Bezeichnung des regulären Ausdrucks zu übergeben, wie siehts dann aus?


    Also z.B.:


    JavaScript
    var expr = [[Regulärer Ausdruck 1, Nummer 1]
    , [Regulärer Ausdruck 2, Nummer 2]]


    Anschließend soll der Name (Nummer 1 oder Nummer 2 oder ...) an das zurückgegeben Array "m" angehängt werden.


    Hab hier mal probiert, funktioniert aber nicht: http://jsfiddle.net/Schmakus/njLj6ytd/4/


    Grüße
    Schmakus


    P.S. Frohe Ostern! :)

  • Hi, super! Somit könnte ich die Expressions via Ajax aus einer Datenback holen.


    Wenn nun aber das Objekt "expr" ausserhalb der For-Schleife deklariert wird, wie siehts dann aus?


    Das folgende funktioniert nicht. Da wirft mir die Konsole folgendes aus: "TypeError: null is not an object (evaluating 'm[1]')"



    http://jsfiddle.net/Schmakus/g9kzv31b/3/

  • expr ist ein ARRAY und kein Objekt..
    Muss so aussehen:

    JavaScript: 3
    var expr = [];


    Am besten dann

    JavaScript
    expr[0] = {
      "name" :"Name 1",
      "expr" : /([7]{1}[8,5]{1}[0-9]{2}[.]?[0-9]{3}[.]?[0-9]{3})[a-zA-Z0-9_.\\- ]*([0-9]{7})/
    };

    statt

    JavaScript
    expr[0] = {};
    expr[0].name = "Name 1";
    expr[0].e = /([7]{1}[8,5]{1}[0-9]{2}[.]?[0-9]{3}[.]?[0-9]{3})[a-zA-Z0-9_.\- ]*([0-9]{7})/;


    wieso willst du die expressions aus ner DB holen oO


    Naja hier mal die Grundlage
    http://codepen.io/wolf-w/pen/wBbGeo


    Evtl sollte man nach mögl. die Expressions cachen und nicht immer neu laden..

  • wolf: Super, danke für das Script.
    Jedoch stehe ich nun vor einem Problem:


    Ich rufe die Funktion via

    JavaScript
    variable = validate(str)

    auf.
    Wie bekomme ich nun das Ergebnis des Ajax Calls in die Variable?


    In deinem Beispiel rufst du eine Funktion

    JavaScript
    feedback(f)

    auf.

  • Ja das ist ABSICHT weil AJAX asynchron abläuft und deine Version (via variblenaufruf -> JS wartet nicht darauf das die Funktion ausgeführt wird, d.h. die Var bekommt NULL oder so zugewiesen) so nicht funktionieren wird (auser du stelst das asynchron Verhalten aus, dann kannst du die Dinger aber auch gleich am Anfang mit laden und dir das AJAX sparen.. ). Kannst du nicht alles mit der Funktion feedback() regeln lassen?
    Also das was nach der Variablenzuweisung kommen würde in die Funktion feedback() tun..

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!