Primero, quiero validar el campo de que si el usuario escribe un carácter que no existe en este (por ejemplo): /[ùûüÿ€'“”«»–àâæçéèêëïîôœ]/ el mensaje de error se activará desde Yup.
En segundo lugar, quiero concatenar las 3 variables con la validación Regex.
Aquí está el código:
const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:'”,./<>?| \\\\\ [\]]*$/; const validChars2 = /[ùûüÿ€'“”«»–àâæçéèêëïîôœ]/; const validChars3 = /[áéíóúüñ¿]/; const mainValidator = validChars1 + validChars2 + validChars3; const validationSchema = yup.object({ primaryInformation: yup.object({ externalEmployeeId: yup .string() .matches(mainValidator, "Please enter valid name") .required(intl.get("userManagement.editor.requiredFieldError")) //Error: Operator '+' cannot be applied to types 'RegExp' and 'RegExp'Por favor, ayúdame a salir de este problema, ¡gracias!
Si bien no puede componer RegExps como este con JavaScript simple, puede hacerlo
const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:'”,./<>?| \\\\\ [\]]*$/; const validChars2 = /[ùûüÿ€'“”«»–àâæçéèêëïîôœ]/; const validChars3 = /[áéíóúüñ¿]/; const mainValidator = new RegExp( validChars1.source + validChars2.source + validChars3.source ); // etc... Sin embargo, hay otro problema con sus RegExps: el primero termina con las aserciones $ que coinciden con el final de la entrada. Un RegExp de la forma /a$b/ nunca tendrá éxito porque $b es contradictorio. ni "a" ni "ab" pueden satisfacerlo. para "a" , $ tendrá éxito, pero b fallará, y viceversa para "ab" .
Si desea componer RegExps sin recurrir a la manipulación de cadenas de origen, puede echar un vistazo a compose-regexp que le permitiría escribir código como este:
import {sequence} from 'compose-regexp' const validChars1 = /[A-Za-z0-9`~!@#$%^&*()+={};:'”,./<>?| \\\\\ [\]]*/; const validChars2 = /[ùûüÿ€'“”«»–àâæçéèêëïîôœ]/; const validChars3 = /[áéíóúüñ¿]/; const mainValidator = sequence(validChars1, validChars2, validChars3);