diff --git a/source/UI/js/Core/URL.js b/source/UI/js/Core/URL.js index c802d353..814044d0 100644 --- a/source/UI/js/Core/URL.js +++ b/source/UI/js/Core/URL.js @@ -618,6 +618,16 @@ Ox.URL = function(options) { }); } + function isDate(str) { + var values = /^(-?\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?$/ + .exec(str); + return Boolean( + values && + parseInt(values[1]) <= 9999 && + (!values[2] || parseInt(values[2]) <= 12) && + (!values[3] || parseInt(values[3]) <= 31) + ) + } function getSpanType(str, types) { Ox.Log('Core', 'getSpanType', str, types) @@ -633,7 +643,7 @@ Ox.URL = function(options) { : canBeLocation && length == 4 ? 'location' // leaves us with [-]D[.D][,[-]D[.D]] : canBeDuration ? 'duration' - : canBeDate && !/\./.test(str) && !/^\d{7}$/.test(str) && !/^\d{8}$/.test(str) ? 'date' + : canBeDate && isDate(str) ? 'date' : canBeLocation && length == 2 ? 'location' : canBeNumber && /^\d+$/.test(str) ? 'number' : canBeString && str.length ? 'string'