Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Fehler in regulären Ausdruck JavaScript

Mitglied: Maik87

Maik87 (Level 2) - Jetzt verbinden

06.09.2011 um 09:32 Uhr, 2389 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe ein PHP-System von meinem Vorgänger übernommen und bin noch dabei einzusteigen.

Jetzt habe ich folgendes Problem gefunden:
Ich habe eine Textbox, in der ich ein Datum eingebe. Bis zum Datum 31.07.XXXX geht alles gut. Ab dem 01.08.XXXX wirft ein regulärer Ausdruck/JavaScript alles durcheinander.

Hier mal die Zeile:

'f=f.replace(/^\s+/, \'\').replace(/\s+$/, \'\').replace(/\s{2,}/, \' \'); try{var x=f.split(\'.\'); var d=new Date(); d.setYear(parseInt(x[2])); d.setMonth(parseInt(x[1])-1); d.setDate(parseInt(x[0])); if(isNaN(d)) return \'\'; var t=d.getDate(); if(!parseInt(t/10)) t=\'0\'+t; var m=d.getMonth()+1; if(!parseInt(m/10)) m=\'0\'+m; return t+\'.\'+m+\'.\'+d.getFullYear();}catch(e){return \'\';}'

Steigt hier jemand durch? Erkennt hier jemand den Fehler und kann mir sagen, wieso das Datum falsch ausgeworfen wird?

Ich bedanke mich schonmal.
Mitglied: nxclass
06.09.2011 um 12:56 Uhr
01.
f = f.replace(/^\s+/, '') . replace(/\s+$/, '') . replace(/\s{2,}/, ' '); 
02.
try { 
03.
  var x=f.split('.'); 
04.
  var d=new Date(); 
05.
 
06.
  d.setYear(parseInt(x[2])); 
07.
  d.setMonth(parseInt(x[1])-1); 
08.
  d.setDate(parseInt(x[0])); 
09.
  if (isNaN(d)) return ''; 
10.
 
11.
  var t = d.getDate(); 
12.
  if (!parseInt(t/10)) t = '0' + t; 
13.
 
14.
  var m = d.getMonth()+1; 
15.
  if (!parseInt(m/10)) m = '0' + m; 
16.
 
17.
  return t + '.' + m + '.' + d.getFullYear(); 
18.
} catch(e) { 
19.
  return ''; 
20.
}
... so - jetzt kann man es lesen ... Was für ein Ergebnis erwartest du denn ?

EDIT: der Bereich 'Javascript' ist bestimmt besser geeignet.
Bitte warten ..
Mitglied: Maik87
06.09.2011 um 12:59 Uhr
Danke!
Ich wusste nicht, wie das geht...
Bitte warten ..
Mitglied: nxclass
06.09.2011 um 13:13 Uhr
du kannst ja mal den
01.
try { 
02.
} catch() { 
03.
}
weglassen - dann spuckt er auch Fehlermeldungen aus.
Bitte warten ..
Mitglied: nxclass
06.09.2011 um 15:16 Uhr
das Problem ist ein Eingabefehler - das Script geht davon aus, dass du '1.8.2011' eingibst.

edit: benutze mal das:
01.
'f=f.replace(/\s/g, \'\'); try{var x=f.split(\'.\'); var d=new Date(); d.setYear(parseInt(x[2]*1)); d.setMonth(parseInt(x[1]*1)-1); d.setDate(parseInt(x[0]*1)); if(isNaN(d)) return \'\'; var t=d.getDate(); if(t<10) t=\'0\'+t; var m=d.getMonth()+1; if(m<10) m=\'0\'+m; return t+\'.\'+m+\'.\'+d.getFullYear();}catch(e){return \'\';}'
Bitte warten ..
Mitglied: Maik87
06.09.2011 um 15:47 Uhr
Danke dir schonmal!
Teste ich morgen, wenn ich wieder im Lande bin.

Aber wieso geht dann 01.07.2011? Da sind doch auch führende Nullen drin.
Bitte warten ..
Mitglied: nxclass
06.09.2011 um 16:08 Uhr
Es hat nichts mit den führenden Nullen zu tun - wenn das Date Objekt erzeugt wird erhält es intern das aktuelle Datum - setzt du nun den Tag auf 31 und der aktuelle Monat hat keinen 31. entsteht ein Fehler.

daher nochmal den Code angepasst:
01.
'f=f.replace(/\s/g, \'\'); try{var x=f.split(\'.\'); var d=new Date(x[2],x[1]-1,x[0]); if(isNaN(d)) return \'\'; var t=d.getDate(); if(!parseInt(t/10)) t=\'0\'+t; var m=d.getMonth()+1; if(!parseInt(m/10)) m=\'0\'+m; return t+\'.\'+m+\'.\'+d.getFullYear();}catch(e){return \'\';}'
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Problem bei der Erstellung eines Regulären Ausdruckes

gelöst Frage von spawny2407VB for Applications2 Kommentare

Hallo liebe Gemeinde, habe ein nicht endendes Problem. Da ich auf dem Gebiet der Regulären Ausdrucke sehr neu bin, ...

Exchange Server

Reguläre Ausdrücke in Transportregeln EXCH 2010

Frage von has.andExchange Server

Guten Morgen, Ich arbeite gerade an einer Transportregel die mir Mails, die an gewisse Adressen, mit bestimmten Betreff gesendet ...

Datenbanken

Reguläre Ausdrücke in MSSQL dynamisch zusammensetzen

Frage von AndroxinDatenbanken2 Kommentare

Hallo, ich habe eine Tabelle mit einer Spalte, deren Inhalt ich mit regulären Ausdrücken einschränken möchte. Momentan geht es ...

Batch & Shell

Regulärer Ausdruck bzw. RegExp für fail2ban

gelöst Frage von incisor2kBatch & Shell

Hallo zusammen, ich hoffe ich stelle die Frage hierfür an richtiger Stelle. Leider komme ich nicht auf die Lösung, ...

Neue Wissensbeiträge
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 6 StundenWindows Server

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 12 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 15 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...