2017-03-04 6 views
-2

Ich bin wirklich neu in Regex, also suche ich nach einer Möglichkeit zu überprüfen, ob meine Zeichenfolge mit einer bestimmten Regex beginnt. Ich habe this im Internet gefunden, aber ich kann es nicht mit einem benutzerdefinierten Regex arbeiten lassen.Überprüfen Sie, ob der String mit Regex Nummer beginnt

Ich muss wissen, ob eine bestimmte Zeile beginnt mit

3.3. XXX 

das ist, wie Sie deutsche Datumsformat. So ist die regex muss nicht nur so aussehen, aber möglicherweise

17.4. XXX 

in beiden Fällen, ich muss wissen, ob die eingegebene Zeichenkette mit einem Datum beginnt (die zwei möglichen Schreibweisen haben kann, wie oben angegeben) . Also, für beide würde es wahr, aber es wäre nicht dafür:

(zum Beispiel).

Welcher Regex ist dafür gut?

+0

verwenden Was Sie versucht haben, so weit? – revo

+1

Wenn Sie das Datum analysieren, ist es besser, [Parse] (https://msdn.microsoft.com/en-us/library/1k1skd40 (v = vs.110) .aspx) oder seine [Überladung] zu verwenden. (https://msdn.microsoft.com/en-us/library/kc8s65zs(v=vs.110).aspx). – cassandrad

+0

Warum sagst du, dass es eine * Zeit * ist, aber am Ende sagen, dass die Strings mit einem * Datum * beginnen? –

Antwort

1

Regex ist nicht gut Parsing Nummernbereiche so kann es ziemlich chaotisch https://stackoverflow.com/a/15504877/1383168

Um zu überprüfen, ob eine Zeichenfolge ein gültiges Datum ist, können Sie DateTime.TryParseExact

string s = "17.4. XXX"; DateTime d; 

if (DateTime.TryParseExact(s.Split(' ')[0], "d.M.", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out d)) 
{ 
    // matches 
    Debug.Print($"{d}"); // "4/17/2017 12:00:00 AM" 
} 
+0

Sehr schöne und saubere Lösung, funktioniert perfekt für alle Termine und braucht keine manuellen Regex-Prüfungen. Vielen Dank! –

1

Wenn Sie eine Regex für die Erkennung von dd.mm Art des Datums möchten, ist dies Ihre Antwort.

string testregex = "([0-2][0-9]|3[0-1]|[0-9])(.)(0[1-9]|1[0-2]|[0-9])(.)"; 

Sie eine beliebige Zeichenfolge überprüfen Übereinstimmung für diese regex zu finden, gibt Regex.IsMatch() wahr und Anweisungen in if-Block ausgeführt wird.

string text="17.4 xxxxxx"; 
if (Regex.IsMatch(string test,testregex)) 
{ 
    //do something 
} 
+1

"' geben Sie mir mehr Details in den Kommentaren ". Tun Sie dies nicht, versuchen Sie, Ihre Frage mit allen relevanten Details und Beispielen auf dem neuesten Stand zu halten. ** Allerdings sollte jede Regex-Frage zumindest einige Beispiele dafür enthalten, was passieren sollte und was scheitern sollte und warum. Es ist auch in Ordnung, nachdem Sie die Frage aktualisiert haben, auf eine Antwort zu antworten, dass die Frage aktualisiert wurde. –

+0

Ich kann sehen, Sie stellen "17.4", aber nicht "17.4", was erforderlich ist. Wie ich sehen kann, fehlt der Punkt (.) Am Ende der Regex. Hast du vor, dies zu tun? Danke für deine Antwort trotzdem. –

+0

gibt es immer einen Punkt (.) Am Ende der Zielzeichenfolgen? Wenn es ja ist, dann informiere mich, damit ich den Regex in meiner Antwort bearbeite. –

Verwandte Themen