Estoy en la versión 8.3.7 de redux-form, estoy usando el campo que debería poder aceptar SOLO números enteros positivos entre el rango 0-9999.
const REGEX_SPECIAL_CHARACTERS = /[@\-\_\!\#\$\%\.\&]/; <Field mandatory step={1} name="fieldName" type="number" min={0} max={9999} normalize={(value) => { console.log({value}); return value?.split(REGEX_SPECIAL_CHARACTERS, 1).join(''); }} > Text </Field> Estoy usando el accesorio de normalize para validar esto. Si ingreso 1.9 , al desenfocar establecerá 1 , lo cual está bien. Si hago -0 o -1 o simplemente -n (n = cualquier número) simplemente elimina el valor completo dejando un campo vacío y necesito que SIEMPRE sea 0 si hay algún valor menor que 0 .
No sé si tal vez esté usando el accesorio de format , pero no sé cómo usarlo => https://redux-form.com/8.3.0/docs/api/field.md/#-code-format-value-name- gt-formattedvalue-code-opcional-
Entonces, ¿alguna idea sobre cómo puedo solucionar esto?
Entonces, esto eliminaría inmediatamente cualquier carácter que no sea un dígito, y solo permitiría números enteros positivos:
const onlyDigits = new RegExp('\\d+'); const parsePositiveInt = (value) => { const matches = value.match(onlyDigits); return matches ? parseInt(matches[0]) : 0; }; // ... normalize={(value) => parsePositiveInt(value).toString()} No está convirtiendo 1.9 a 1 como lo describiste, sino que lo convierte en 19 .