Felix Riesterer: search() mit mehreren Bedingungen

Beitrag lesen

Lieber Romero,

lass uns mal die Bestandteile untersuchen:

A) Offensichtlich gibt es einen Bestandteil, der immer vorkommt: "A12399888000 - ".

B) Wenn der in A) definierte Teil vorkommt, dann kann es einen Teil "Insul. Area AB" geben, muss aber nicht.

C) Wenn A) und B) vorkommen, dann kann eine Ergänzung "S.15" vorkommen, muss aber nicht.

D) Wenn A), B) und C) vorkommen, dann kann eine weitere Ergänzung "-18" vorkommen, muss aber nicht.

E) Wenn A) vorkommt, B) aber nicht, dann folgt "S.15 AB".

Das kann man mit einem regulären Ausdruck zusammenfassen. Offensichtlich willst Du mit der search()-Methode allein auf das Vorhandensein prüfen, wozu auch match() genügen würde. Also probiere ich jetzt ins Unreine einen regulären Ausdruck:

var pattern = new RegExp(  
    // muss am Anfang vorkommen  
    "^A12399888000 - "  
    // Alternativen  
    + "("  
        // eine Alternative  
        + "S\.15 AB"  
    + "|"  
        // andere Alternative  
        + "Insul\. Area AB"  
        // mögliche Ergänzungen  
        + "("  
            + " S\.15"  
            // weitere mögliche Ergänzung innerhalb  
            + "(-18)?"  
        + ")?"  
    + ")$" // Ende  
);  
  
if (myString.match(pattern)) {  
    // gefunden!  
}

Hinweis: Code ist ungetestet!

Liebe Grüße,

Felix Riesterer.

--
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)