`isISO8601` misroutes signed ordinal dates
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- backend
Línea de trabajo
Comienza en los puntos de entrada isISO8601 y isValidDate, centrándote en la expresión regular para fechas ordinales mostrada en el issue. Ejecuta los ejemplos de Node proporcionados después de instalar validator@13.15.35 y, a continuación, verifica que las fechas ordinales con signo utilicen la rama ordinal, que los ejemplos válidos pasen, que los valores de día del año no válidos fallen y que el comportamiento sin signo siga siendo correcto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
The ordinal-date branch in isValidDate matches with
const ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);
That pattern has no sign prefix, although the main isISO8601 regex accepts a
leading + or - on the year. A signed ordinal date therefore fails this
match and falls through to the calendar branch, where the generic
(\d{4})-?(\d{0,2})-?(\d*) split cuts the three-digit day-of-year into a
two-digit month and a one-digit day.
The result is that day-of-year is never validated for signed ordinal dates, and
some valid ones are rejected outright.
Examples
const validator = require('validator'); // 13.15.35
// Day 145 of 2009 exists, but the split reads month 14, day 5 and rejects it
validator.isISO8601('+2009-145', { strict: true }); // false, expected true
// Day 130 exists too; here the split reads month 13, day 0, the guard falls
// through, and it is accepted without any check
validator.isISO8601('+2009-130', { strict: true }); // true, unvalidated
// Unsigned ordinals take the intended branch and behave correctly
validator.isISO8601('2009-145', { strict: true }); // true
Reproductions
The Examples block above runs as-is on Node after
npm install validator@13.15.35; no harness or scaffolding needed.
Additional context
Adding [+-]? to the ordinal pattern would route these to the branch that
already handles them, including the leap-year bound on line 19.
Validator.js version: 13.15.35
Node.js version: v26.7.0
OS platform: Linux
- Lenguaje dominante
- JavaScript
- Estrellas
- 23.7k
- Forks
- 2.5k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de validatorjs/validator.js
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
validatorjs/validator.js#2885 ·
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
validatorjs/validator.js#2862 ·
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
validatorjs/validator.js#2861 ·
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
validatorjs/validator.js#2859 ·
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
validatorjs/validator.js#2858 ·
Todos los issues de validatorjs/validator.js
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Daemon passes --experimental-wasm-jspi unconditionally on Node >= 24; Node 26 rejects the flag Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Automattic/studio#4908 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
sugarlabs/musicblocks#8847 ·