2016-04-29 12 views
0

Ich muss erkennen, ob eine Zeichenfolge das richtige mysql DB Zeitstempelformat in Javascript hat. Ich schrieb diesen regexp:Javascript regex für mysql Zeitstempelformat funktioniert nicht

var regex = /([0..9]{4})-([0..9]{2})-([0..9]{2}) ([0..9]{2}):([0..9]{2}):([0..9]{2})/; 

jedoch, wenn sie mit der Zeichenfolge verwendet

var s = "2014-09-08 08:02:17"; 
if (regex.test){ 
    console.log("OK"); 
} 

Es funktioniert nicht. Kann mir jemand sagen, was ich falsch gemacht habe?

+1

ersetzen '..' mit' -' .. –

+0

Danke. Bitte posten Sie es als Antwort, damit ich es richtig markieren kann. Das Schlimmste daran ist, dass ich nachgesehen habe und den Unterschied nicht gesehen habe. – aarelovich

+0

@aarelovich versuchen [diesen Link] (http://regexr.com), um Ihre Regex – MrByte11

Antwort

0

Anker hinzufügen und .. mit - ersetzen. Weil - innerhalb einer Zeichenklasse (nicht am ersten oder letzten) wie ein Bereich Quantifizierer handeln sollte.

var regex = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$/; 

Und Anker, ja es ist muss. Ansonsten sollte Ihr Regex diesem 54632014-09-08 08:02:173563 entsprechen. Anker führen eine exakte Übereinstimmung aus. Sie können Anker durch \b ersetzen, wenn Sie keine exakte Übereinstimmung wünschen.

2

Die Regex für diese Datumsformat ist: (\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})

hier ein JsFiddle: https://jsfiddle.net/2vh23Lmt/

var string = "2014-09-08 08:02:17"; 
 
    var re = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/g; 
 
    if (re.test(string)) { 
 
     console.log("Valid"); 
 
    } else { 
 
     console.log("Invalid"); 
 
    }

+0

'([\ d] {4} - [\ d] {2} - [\ d] {2} (?: [\ d] {2}:) {2} [\ d] {2}) 'vervollständigt es schneller, da es weniger Schritte benötigt (7 gemäß meinem Regex-Tester). Es hängt alles davon ab, ob die OP 1 oder viele macht. [hier] (https://regex101.com/r/yO6pK2/1) –

1

Da ist 2 Fehler in Ihrem Ansatz:

  • a) falsche Zeichenklasse [0..9] (sollte [0-9] sein);
  • b) getestet Zeichenfolge in regex.test Funktionsaufruf ist nicht
  • angegeben

var regex = /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/g; 
var s = "2014-09-08 08:02:17"; 
if (regex.test(s)){ 
    console.log("OK"); 
}