Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

399
Vistas
¿Cómo podemos usar una matriz de valores de expresiones regulares en Sí, en función de un valor de formulario?

React v16, formik, sí.

Estoy creando un formulario en el que un usuario primero debe seleccionar su estado. este es un campo de selección.

Hay un segundo campo para la licencia, que requerirá una validación diferente según el estado. Tengo una lista de valores de expresiones regulares que funcionan bien si agrego uno directamente a Sí. por ejemplo:

 export const form = Yup.object().shape({ state: Yup.string().required(), license: Yup.string() .when("required", { is: (required) => required === true, then: Yup.string() .required("This field is required") .matches(/^[0-9]{14}$/, "Please enter the ID in the proper format"), }),

el código anterior, expresión regular codificada, funciona muy bien.

la pregunta es ¿cómo puedo devolver un valor de expresión regular en lugar de /^[0-9]{14}$/ , desde una matriz que tengo con todos los valores de expresión regular? cuando un usuario elige un estado, quiero que esa expresión regular se cambie por su licencia.

Intenté agregar funciones (me mantuve alejado del uso de funciones de flecha globalmente en el esquema de validación de Yup debido a problemas con el enlace a esto según sus documentos en Yup

otra cosa que he intentado es agregar un campo en mi formulario llamado "regex". esto se establece cuando el usuario elige su estado en el formulario. es un campo invisible que establecí con Formik.setFieldValue que conserva la expresión regular, a la que puedo llamar desde la validación. no funciona

 license: Yup.string() .when(["required", regex], { is: (required) => required === true, then: (regex) => Yup.string() .required("This field is required") .matches(regex, "Please enter the ID in the proper format"),

incluso cuando intento crear una nueva expresión regular con js, no hay suerte

 .matches(new RegExp(/^[0-9]{14}$/), "Please enter the ID in the proper format"),

parece que puedo hacer este trabajo 1 vez, pero en los cambios de estado, el valor en formik nunca se vuelve a evaluar.

para reiterar mi pregunta: ¿Cómo puedo agregar expresiones regulares dinámicas para un campo en Sí, en función de un segundo campo?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda