2016-07-07 4 views
1

Ich möchte einen Teilstring übereinstimmen, egal in welcher Reihenfolge ich ihn verwende. Zum Beispiel:Welche Regex könnte verwendet werden, um einen Teilstring unabhängig von der Reihenfolge zu finden?

82toto12a MyProject888 TeamCitySupermarket897

Ich habe diese regex, dass es

.*?toto.*?12 

Spiele Aber Ich schaffe die Regex dynamisch, so dass ich am Ende mit:

.*?12.*?toto 

Und natürlich funktioniert das nicht. Ich habe ein Suchfeld, das in Regex übersetzt, so dass ein Benutzer eingeben könnte: "12 und Toto", und das würde auf die obige Regex übersetzen, die natürlich nicht funktioniert.

MyProject und 888 oder 888 und MyProject

Sowohl auf regex diejenigen Benutzer Zeichenfolge würde am Ende wird übersetzt mit:

Um eine der Saiten zu entsprechen, kann der Benutzer eingeben :

.*?MyProject.*?888 
.*?888.*?MyProject 

Und die zweite regex wäre natürlich alles nicht mithalten ...

Was wäre der Testweg, um jedes Wort, das der Benutzer eingibt, zu vergleichen?

+0

Können Sie mehr Testfälle liefern ? –

+0

Ich würde das jeweils separat prüfen. Das ist leichter zu pflegen und zu erweitern und wahrscheinlich lesbarer als ein riesiger regulärer Ausdruck. – Kusalananda

Antwort

3

Sie lookarounds für Ihre Spiele verwenden können:

\b(?=\w*toto)(?=\w*12)\w+ 

OR:

\b(?=\w*12)(?=\w*toto)\w+ 

beide Ihre Eingabe passen: 82toto12a

RegEx Demo

Verwandte Themen