2017-11-06 4 views
0

Ich versuche, Javascript Regex Ausdruck, der Zeit nimmt von Benutzer Eingabe. Ich habe Expressionszeit von 04.00 aufzunehmen - 04.59:Javascript, Regex Ausdruck

/([4]|0[4])[:.,]([0-5][0-9])[.,/;](\d)/ 

Aber jetzt, wenn ich zu 14.00 bis 14.30 Uhr:

/(14)[:.,]([0-2][1-9]|10|20|30)[.,/;](\d)/ 

Der erste regulären Ausdruck (von 04: 00-04: 59) nimmt auch die Eingabe von der zweiten. Gibt es eine Möglichkeit, sie zu trennen, so dass es kein Problem gibt, wenn Benutzer Zeit eingeben?

+0

Sieht aus wie Sie [zwei Probleme] (https://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/) bekam. Gibt es einen Grund, warum Sie versuchen, dies mit regulären Ausdrücken zu lösen? – Xufox

+0

Wenn es sich um eine einmalige Validierung handelt und nicht um eine Live-Änderung, warum schreiben Sie dann nicht einfach eine Funktion, die durch '-' und dann durch': 'geteilt wird und führen Sie die erforderlichen Validierungen durch? Sie könnten nicht RegEx. –

Antwort

0

Sie können Regex für die Validierung von Eingabe von 4:00 bis 04.59 ist unten. Bitte verwenden Sie diese

^(?:0\d[4]|0[4]):[0-5]\d$

1

Ihre Frage zu urteilen, sind Sie nicht ganz bereit für reguläre Ausdrücke. auch, bei der Überprüfung Ihrer Frage, die Validierung von Zeit und Regex wird es nicht einfach machen, akzeptable Werte einzuschränken, dh 0-24 für Stunden und 0-59 für Minuten

siehe Code-Schnipsel für wie dies ohne zu tun Regex

Betrachten Sie eine vorhandene Bibliothek, die es bereits tut, so dass Sie das Rad nicht neu erfinden müssen.

time = '04:59' 
 

 
parts = time.split(':') 
 
hours = parseInt(parts[0], 10) 
 
minutes = parseInt(parts[1], 10) 
 
isValid = ((hours >= 0 && hours <=24) && (minutes >= 0 && minutes <= 59))