hay una cadena "05/05/2022" cómo verificar que puede ser una fecha, pero "5.1" no debe ser una fecha Ejemplo de fecha
05.05.2020 05/05/2020 05/05/2020;22:40un ejemplo de no una fecha sino un número
5 5.1 5.23Esto se puede hacer con una expresión regular como ...
/^\d{1,2}(?<separator>[./])\d{1,2}\k<separator>\d{2}(?:\d{2})?(?:\s*;\s*\d{2}:\d{2})?$/ ... o ...
/^\d{2}(?<separator>[./])\d{2}\k<separator>\d{4}(?:\s*;\s*\d{2}:\d{2})?$/
... donde el primero es más indulgente con el formato de fecha en términos de conteo de dígitos del día ( 1 o 2 ), mes ( 1 o 2 ) y año ( 2 o 4 ), mientras que el último impone un estricto conteo de dígitos de 2,2,4 para, por ejemplo dd/mm/yyyy .
Ambos patrones utilizan un grupo de captura con nombre para el separador de fecha (ya sea . o / ) que se utilizará como referencia inversa con nombre para garantizar un formato de fecha correcto.
Ambos patrones también presentan la coincidencia opcional para un formato de hora... [ (?:\s*;\s*\d{2}:\d{2})? ] ... que posiblemente siga un formato de fecha válido.
const multilineSample = `5.5.20 5.5.202 5.5/2020 05.05.2020 05/05.2020 05/05/2020 05/05/2020;22:40 5 5.1 5.23`; // see ... [https://regex101.com/r/6CwyXy/1] const regXDateFormatLooseDigitCount = /^\d{1,2}(?<separator>[./])\d{1,2}\k<separator>\d{2}(?:\d{2})?(?:\s*;\s*\d{2}:\d{2})?$/gm; // see ... [https://regex101.com/r/6CwyXy/2] const regXDateFormatStrictDigitCount = /^\d{2}(?<separator>[./])\d{2}\k<separator>\d{4}(?:\s*;\s*\d{2}:\d{2})?$/gm console.log( 'sample data ...\n', multilineSample ); console.log( 'result for loose digit count ...', multilineSample.match(regXDateFormatLooseDigitCount) ); console.log( 'result for strict digit count ...', multilineSample.match(regXDateFormatStrictDigitCount) ); .as-console-wrapper { min-height: 100%!important; top: 0; }Suponiendo que solo obtendrá números o fechas y nada más que estas dos entradas:
// Assuming that you'll be getting either a date or a number let checkDate = (val)=>{ let count = 0 ; for(let i=0 ; i<val.length ; i++)if(val[i]==='.'||val[i]==="/")count++; if(count<=1)return false; return true; } let date1 = "05/05/2022"; if(checkDate(date1))console.log(date1+" is a date"); else console.log(date1+" is a number"); let date2 = "5.34"; if(checkDate(date2))console.log(date2+" is a date"); else console.log(date2+" is a number");