119 Stimmen

Abgleich mit regulären Ausdrücken, um auf ein gültiges Jahr zu prüfen

Ich möchte einen Wert validieren, um zu prüfen, ob es sich um ein gültiges Jahr handelt. Meine Kriterien sind einfach: Der Wert sollte eine Ganzzahl mit 4 Zeichen. Ich weiß, dass dies nicht die beste Lösung ist, da es nicht möglich sein wird, Jahre vor 1000 und ermöglicht Jahre wie 5000 . Diese Kriterien sind für mein derzeitiges Szenario angemessen.

Ich habe mir Folgendes ausgedacht

\d{4}$

Dies funktioniert zwar, erlaubt aber auch negative Werte.

Wie kann ich sicherstellen, dass nur positive ganze Zahlen zulässig sind?

4voto

Dhyey Punkte 4050

Um eine Jahreszahl in einer Zeichenkette zu prüfen, die neben der Jahreszahl auch andere Wörter enthält, können Sie die folgende Regex verwenden: \b\d {4} \b

3voto

Adil Aliyev Punkte 1119

Theoretisch ist die 4-stellige Option richtig. In der Praxis könnte es jedoch besser sein, einen Bereich von 1900-2099 zu haben.

Außerdem muss es sich um eine nicht fangende Gruppe handeln. In vielen Kommentaren und Antworten wird eine erfassende Gruppierung vorgeschlagen, was IMHO nicht richtig ist. Denn für den Abgleich könnte es funktionieren, aber für die Extraktion von Übereinstimmungen mit Regex wird es vierstellige Zahlen und zweistellige (19 und 20) Zahlen auch wegen der Paranthese extrahieren.

Dies funktioniert bei exaktem Abgleich mit nicht-erfassenden Gruppen:

(?:19|20)\d{2}

2voto

MarcoZen Punkte 1348

Verwendung;

^(19|[2-9][0-9])\d{2}$ 

für die Jahre 1900 - 9999.

Bis 9999 und darüber hinaus brauchen Sie sich keine Sorgen zu machen - bis dahin wird die künstliche Intelligenz die gesamte Programmierung übernehmen!!! Hehehehe

Sie können Ihre Regex testen unter https://regex101.com/

Weitere Informationen über nicht fangende Gruppen (in einem der Kommentare oben erwähnt) finden Sie hier http://www.manifold.net/doc/radian/why_do_non-capture_groups_exist_.htm

1voto

pierroz Punkte 7245

Sie können mit etw. gehen wie [ ^-]\d{4}$ : Sie verhindern das Minuszeichen - vor Ihren 4 Ziffern stehen.
können Sie auch verwenden ^\d{4}$ con ^ um den Anfang der Zeichenkette zu erfassen. Es hängt tatsächlich von Ihrem Szenario ab...

1voto

Dayz Punkte 259

/^ \d {4}$/ Damit wird geprüft, ob eine Zeichenkette nur aus 4 Zahlen besteht. In diesem Szenario können Sie stattdessen 0989 eingeben, um das Jahr 989 einzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X