Das richtige Muster wäre:
^(u|upload)$
Dabei sind ^
und $
anchors, die den Anfang und das Ende der Zeichenfolge entsprechen. Dies bedeutet, dass das Muster nur die Zeichenfolge oder gar nichts entspricht.
Aber was das betrifft, die Sie nicht wirklich reguläre Ausdrücke überhaupt benötigen:
var values = new[] { "u", "upload" };
return values.Contains(msg.Text, StringComparer.OrdinalIgnoreCase);
Nur zur Veranschaulichung würde ein äquivalentes Muster sein:
^u(pload)?$
Dies macht jede Zeichenfolge, die mit u
beginnt, optional gefolgt von pload
, gefolgt vom Ende der Zeichenfolge. keines von beiden
Hinweis jedoch wird nur Spiel u
, U
, upload
oder Upload
. Dank RegexOptions.IgnoreCase
würden sie auch UPLOAD
oder uPlOaD
entsprechen. Wenn Sie nur genau die vier Optionen zu überprüfen wollen könnten Sie tun:
var regex = new Regex("^[uU](pload)?$");
Oder (mit group options):
var regex = new Regex("^u(?-i:pload)?$", RegexOptions.IgnoreCase);
oder ohne reguläre Ausdrücke:
var values = new[] { "u", "U", "upload", "Upload" };
return values.Contains(msg.Text);
Spiel am Start? – heemayl
@heemayl nicht nur u oder nichts hochladen, up wäre ungültig. – user299709