Die anderen Antworten sind verwenden können, verwenden perfekt Gut für Ihr spezifisches Problem, aber wie Paulpro bemerkte, geraten Sie wirklich außer Kontrolle, wenn Sie mehr als zwei Wörter haben.
Der einfachste Ausweg besteht darin, mehrere Überprüfungen zu verwenden, wie es die Explosionspillen vermuten lassen.
Aber für eine skalierbare regex-only-Ansatz können Sie lookaheads verwenden:
/^(?=.*google)(?=.*microsoft)(?=.*apple).../
Die Look-Ahead verbrauchen nicht wirklich etwas, so nach dem ersten Zustand überprüft wird (das .*google
mithalten können), sind Sie zurück am Anfang der Zeichenfolge und kann die nächste Bedingung überprüfen. Das Muster wird nur bestanden, wenn alle Lookaheads dies tun.
Beachten Sie, dass .*
nicht funktioniert, wenn Ihre Eingabe Zeilenumbrüche enthalten kann. Sie müssen stattdessen [^]*
oder [\s\S]*
verwenden (dasselbe gilt für die Antworten der anderen).
@ m.buettner ausgezeichneter Punkt. –
Ich weiß, dass ich 'match' zweimal verwenden kann, aber ich wollte es mit regex, um es kürzer zu machen .. aber mit regex scheint es länger zu sein als mit' match' zweimal – Enve
@Enve short code ist nicht unbedingt der am meisten lesbar. Vor allem, wenn der "lange" Code bereits in ein oder zwei Zeilen passt. –