Tengo algún contenido de req.body que quiero validar. Usé esta línea para tener una idea de cómo se ven los datos cuando se pasan a la función de validación:
body('ids').custom(value => {return console.log(value)} )Y eso produce esto:
[ 'D93A4C60-C09A-47FF-B87F-28732B6FEB79', 'D93A4C60-C09A-47FF-B87F-28732B6FEB79' ]Cabe señalar que esa matriz tiene una longitud arbitraria mayor o igual a 1.
Quiero validar esto con la siguiente verificación corporal:
body('ids', 'error message').matches(REGEX)A continuación se muestra la expresión regular que he hecho.
(\['[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}')(,'[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}')+\]Cada vez que pruebo esa expresión regular en esta herramienta ( https://regexr.com/ ) funciona pero no se valida correctamente en mi aplicación Express y creo que se debe a los saltos de línea, pero no estoy seguro de cómo verificar o validar que.
¿Hay una mejor manera de manejar lo que estoy tratando de hacer aquí?
¿Por qué no usa un validador personalizado y luego itera a través de la lista de valores? Luego, puede probar manualmente cada elemento de la lista con su expresión regular. Creo que la función express-validator matches() es más adecuada para parámetros individuales. Esta es mi opinión sobre cómo manejar este problema:
body('ids').custom(value => { value.forEach(element => { if (!value.match('[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}')) { throw new Error('Invalid Input!') }; });})