Es ist absolut möglich. Die Sprache, die du beschreiben willst, ist regulär, also ist sie sogar mit der theoretischen Definition von Regulären Ausdrücken beschreibbar.
Abgesehen von der Auflistung aller Worte (Wie von Namenloser beschrieben) ginge evt. das:
Code:
(K?J|J?K)?(FR|RF)? | (K?F|F?K)?(JR|RJ)? | (K?R|R?K)(FJ|JF)? | (F?J|J?F)(KR|RK)? | (J?R|R?J)?(KF|FK)? | (F?R|R?F)?(KJ|JK)?
ist aber weniger leserlich.
Ansonsten, wenn wir von PCREs reden, bin ich sicher dass es eine kompaktere Möglichkeit gibt [edit]siehe Beitrag darüber[/edit].
Allerdings ist das dann wahrscheinlich kaum noch performant. Insb. weil wir von einer endlichen Sprache reden, sind Regexes overkill.
Die Prüfung direkt im Code zu erledigen ist definitiv performanter und leserlicher.
Erfüllt zwar nicht
aber mit der Einschränkung, dass jeder der 4 Buchstaben höchstens einmal vorkommen darf.
Aber könnte als Vor-Filter für die Auswertung im Code verwendet werden.