Laden...

String auf "valide" via Regex prüfen

Erstellt von dasHund1982 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.440 Views
D
dasHund1982 Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren
String auf "valide" via Regex prüfen

Hallo,

ich habe einen String, der mittels Regex auf folgendes Muster geprüft werden soll:

([\d])(\s+[/*+-]\s+[\d])+

Das Ganze prüfe ich mittels "regex.IsMatch(benutzerEingabe)"

2 + 2 => OK
2 + 2 * 2 => OK
2 + 2+ 2 => NICHT OK => Abfrage fängt den Fehler nicht ab, klar, denn "IsMatch: Gibt an, ob der reguläre Ausdruck eine Übereinstimmung in der Eingabezeichenfolge findet.". Wie kann ich es denn prüfen, ob ALLES passt?

Ich hoffe, ich konnte mich einigermaßen erklären. Vielen Dank schon mal im Voraus.

3.003 Beiträge seit 2006
vor 5 Jahren

Deine Regex haut nicht hin.

Form so um:


Ziffer, beliebig oft; Gruppe aus: (
    mindestens ein Leerzeichen; eines von [/*+-];mindestens ein Leerzeichen; Ziffer, beliebig oft
), mindestens einmal

Edit: als BNF:


Term := Zahl, Subterm
Zahl := Ziffer, [Zahl]
Subterm := Operator, Zahl, [Subterm]
Operator := / | * | + | -

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

49.485 Beiträge seit 2005
vor 5 Jahren

Hallo dasHund1982,

unabhängig von dem Einwand von Latino, hier noch die Antwort auf die eigentliche Frage. Du kannst mit ^ und $ erzwingen, dass die Suche am Anfang des Strings(*) beginnt bzw. endet.

(*) Bzw. der Zeile. Umschaltbar per RegexOptions.Multiline.

herbivore

3.003 Beiträge seit 2006
vor 5 Jahren

Stimmt, ich war davon ausgegangen, dass er prüfen will, ob des sich um einen korrekten math. Term handelt...wollte er ja gar nicht. Also wenn 2 + 2 + 2 ungültig ist, dann mit $ und ^arbeiten. Räum aber mal die überflüssigen Zeichen aus der Regex 😉 .

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

D
dasHund1982 Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Hey,

ich prüfe eure Vorschläge heute Abend. Die Sache mit dem "^" habe ich bereits versucht, leider hat der Online-Regex-Prüfer (https://regexr.com/) das irgendwie nicht gefressen, weshalb ich es weggelassen habe.

Vielen Dank für die Antworten. Ich bin gespannt.

49.485 Beiträge seit 2005
vor 5 Jahren

Hallo dasHund1982,

du kannst es mal mit dem On-the-fly Regex-Tester: Regex-Lab probieren. Damit hatte ich das geschilderte Problem jedenfalls noch nicht.

herbivore