Al ingresar 4 dígitos, debe hacer una sustitución y establecer una barra oblicua entre el segundo y el tercer dígito. Por ejemplo, ingreso 1225 - necesito obtener 12/25
changeInput(event) { this.setState({ [event.target.name]: event.target.value.replace(/\/?/g, '').replace(/(\d{2})/, '$1/') }); } <input type="text" inputMode="numeric" id="cardDate" name="cardDate" value={this.state.cardDate} autoComplete="off" maxLength="5" placeholder="MMYY" onChange={this.changeInput.bind(this)} />Escribí un código de reemplazo, pero cuando intento editar el campo de entrada, hay un problema. ¿Qué ocurre?
Usar Regex para esto es un poco exagerado, hay algunas maneras de hacerlo: Primero, usando String.prototype:
String.prototype.insert = function (index, string) { if (index > 0) { return this.substring(0, index) + string + this.substr(index); } return string + this; }; const string = "1234"; const substring = string.insert(2, "/"); console.log(substring) // "12/34"También puedes hacerlo a través de una matriz:
function replaceAt(string, index, toInsert) { const substring = [...string]; substring.splice(2, 0, toInsert); return substring.join(""); } const string = "1234"; const replaced = replaceAt(string, 1, "/"); console.log(replaced);