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?

0voto

R2Rivs Punkte 1

Ich verwende diese Regex in Java ^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](19|[2-9][0-9])[0-9]{2}$

Werke von 1900 bis 9999

0voto

Comradin Punkte 196

Sie können Ihre Ganzzahl in eine Zeichenkette umwandeln. Da das Minuszeichen nicht mit den Ziffern übereinstimmt, haben Sie keine negativen Jahre.

0voto

Benjamin Goodacre Punkte 262

Wenn Sie JJJJ oder JJJJMMTT abgleichen müssen, können Sie verwenden:

^((?:(?:(?:(?:(?:[1-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:[2468][048]|[13579][26])00))(?:0?2(?:29)))|(?:(?:[1-9]\d{3})(?:(?:(?:0?[13578]|1[02])(?:31))|(?:(?:0?[13-9]|1[0-2])(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8])))))|(?:19|20)\d{2})$

0voto

Ranjeet Chouhan Punkte 605

Sie können auch diesen verwenden.

([0-2][0-9]|3[0-1])\/([0-1][0-2])\/(19[789]\d|20[01]\d)

0voto

Leniel Maccaferri Punkte 96851

In meinem Fall wollte ich eine Zeichenkette abgleichen, die mit einer Jahreszahl (4 Ziffern) endet, wie zum Beispiel so:

Oct 2020
Nov 2020
Dec 2020
Jan 2021

Es wird zurückkehren true mit diesem hier:

var sheetName = 'Jan 2021';
var yearRegex = new RegExp("\b\d{4}$");
var isMonthSheet = yearRegex.test(sheetName);
Logger.log('isMonthSheet = ' + isMonthSheet);

Der obige Code wird verwendet in Apps Script .

Hier ist der Link zum Testen der obigen Regex: https://regex101.com/r/SzYQLN/1

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