unten js/jQuery-Code für dynamische generieren regex für Datumsformat, nicht für das Datum Zeit (Entwicklerversion noch nicht vollständig getestet.)
Datumsformat in "D M Y" sein sollte
zB.
DD-MM-YY,
DD-MM-YYYY,
YYYY-MM-DD,
YYYY-DD-MM,
MM-DD-YYYY,
MM-DD-YY,
TT/MM/JJ
, TT/MM/YYYY,
YYYY/MM/DD,
YYYY/TT/MM,
MM/DD/YYYY,
MM/TT/JJ
oder andere Formate, sondern erstellt mit [DMY] Character
var dateFormat = "DD-MM-YYYY";
var order = [];
var position = {"D":dateFormat.search('D'),"M":dateFormat.search('M'),"Y":dateFormat.search('Y')};
var count = {"D":dateFormat.split("D").length - 1,"M":dateFormat.split("M").length - 1,"Y":dateFormat.split("Y").length - 1};
var seprator ='';
for(var i=0; i<dateFormat.length; i++){
if(["Y","M","D"].indexOf(dateFormat.charAt(i))<0){
seprator = dateFormat.charAt(i);
}else{
if(order.indexOf(dateFormat.charAt(i)) <0){
order.push(dateFormat.charAt(i));
}
}
}
var regEx = "^";
$(order).each(function(ok,ov){
regEx += '(\d{'+count[ov]+'})'+seprator;
});
regEx = regEx.substr(0,(regEx.length)-1);
regEx +="$";
var re = new RegExp(regEx);
console.log(re);
HINWEIS- Es gibt keine Validierungsprüfung für Monate/Tage z.Der Monat sollte in 01-12 sein. Oder das Datum sollte in 01-31
Das funktioniert anständig, aber es ist eher englisch-zentriert . "ddd" könnte dann auf (mon | tue | wed | thu | fri | sat | sun) abgebildet werden, aber Sie benötigen eine locale-abhängige Zuordnung. Sie wird schlechter, wenn das Datumsformat Nicht-ASCII-Ziffern erzeugt M.Kaplan's Blog für weit mehr Details zu i18n. – MSalters
Ja, genau das brauche ich. Ich dachte, etwas ähnliches zu tun, da ich nichts finden konnte, was bereits existiert. Zum Analysieren von dateTimeFormat habe ich jflex verwendet. Also, wenn es "d" ist, sollte es 1 oder 2 Ziffern entsprechen oder wenn es "ddd" ist, sollte es 3 Ziffern usw. entsprechen. Jedoch muss ich es noch für i18n verbessern. – hakan
@MSalter. Könnten Sie den Link für den von Ihnen erwähnten Blog angeben? Danke – hakan