2017-03-27 5 views
-1

Angenommen, ich habe einen Datumsbereich in einem Format wie 1390573112to1490573112, wo die Zahlen sind Epoche Unix Zeit. Gibt es eine Möglichkeit, Regex zu verwenden, um zu bestätigen, dass die zweite Zahl größer als die erste ist?Regex passend für den Datumsbereich

+1

Sie müssen eine Sprache verwenden, die entweder hat lexikalische Art oder Umwandlung von einem String in einem int . Nicht Regex allein. – dawg

Antwort

0

Edit: Ich habe gerade festgestellt, dass Sie Ihre Sprache der Wahl nie als JavaScript angegeben haben. Haben Sie eine bestimmte Sprache, die Sie verwenden? Wie schon erwähnt, ist es kein Reflex, der das alleine lösen wird.


Nicht allein regex, aber man kann es verwenden, um die Zahlen zu erhalten und sie dann so etwas vergleichen:

// Method to compare integers. 
var compareIntegers = function(a, b) { 
    /* Returns: 
    1 when b > a 
    0 when b === a 
    -1 when b < a 
    */ 
    return (a === b) ? 0 : (b > a) ? 1 : -1; 
}; 

// Method to compare timestamps from string in format "{timestamp1}to{timestamp2}" 
var compareTimestampRange = function(str) { 
    // Get timestamp values from string using regex 
    // Drop the first value because it contains the whole matched string 
    var timestamps = str.match(/(\d+)to(\d+)/).slice(1); 
    /* Returns: 
    1 when timestamp2 > timestamp1 
    0 when timestamp2 === timestamp1 
    -1 when timestamp2 < timestamp1 
    */ 
    return compareIntegers.apply(null, timestamps); 
} 

// Test! 
console.log(compareTimestampRange('123to456')); // 1 
console.log(compareTimestampRange('543to210')); // -1 
console.log(compareTimestampRange('123to123')); // 0 
console.log(compareTimestampRange('1390573112to1490573112')); // 1 

Natürlich brauchen Sie nicht einmal regex, wenn Ihr Anwendungsfall ist so einfach.

var timestamps = str.match(/(\d+)to(\d+)/).slice(1); 

Mit dieser: Man könnte diese Zeile ersetzen

var timestamps = str.split('to'); 

das gleiche Ergebnis zu erzielen

+0

Danke, das beantwortete meine Frage, ich fragte mich, ob es mit Regex allein möglich war, und wenn nicht, welcher Ansatz sollte genommen werden. –