es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Validación de esquemas Ajv en javascript con expresiones regulares en clave valor

Tengo un esquema para validar con Ajv en Node.js. Hay un patrón recurrente en las propiedades del json a validar, los posibles valores de las claves son 1, 2, 3, 4, 5. La pregunta es, ¿es posible con una expresión regular expresar solo una propiedad que explique a ajv que los valores de las claves del objeto json pueden ser enteros entre uno y cinco? Y si es así, ¿cómo?

A continuación se muestra un ejemplo del código actual.

const Ajv = require("ajv")
const ajv = new Ajv()

const validate_setparameters = ajv.compile(
    {
        type: "object",
        properties: {
            "1": { type: "integer"},
            "2": { type: "integer"},
            "3": { type: "integer"},
            "4": { type: "integer"},
            "5": { type: "integer"}
        },
        additionalProperties: false,
        minProperties: 1
    }
)

console.log(validate_setparameters({"3":1}))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar una expresión regular para expresar que el valor de las claves del objeto JSON podría ser un número entero entre uno y cinco. La expresión regular para lograr esto sería /^[1-5]$/.

    A continuación se muestra un ejemplo de cómo utilizar esta expresión regular en el esquema con Ajv en Node.js:

    const Ajv = require("ajv")
    const ajv = new Ajv()
    
    const validate_setparameters = ajv.compile(
        {
            type: "object",
            patternProperties: {
                "^[1-5]$": { type: "integer"}
            },
            additionalProperties: false,
            minProperties: 1
        }
    )
    
    console.log(validate_setparameters({"3":1})) // imprime true
    console.log(validate_setparameters({"6":1})) // imprime false
    

    En el ejemplo anterior, se utiliza patternProperties en lugar de properties para emparejar las claves con la expresión regular /^[1-5]$/. Esto asegurará que solo se acepten claves con valores entre 1 y 5 en el objeto JSON.

Comments are closed.