Estoy tratando de eliminar caracteres ilegales de una entrada de usuario en un campo de entrada del navegador.
const myInput = '46432e66Sc' var myPattern = new RegExp(/^[az][a-z0-9]*/); var test = myPattern.test(myInput); if (test === true) { console.log('success',myInput) } else { console.log("fail",myInput.replace(???, "")) }Puedo probar con la expresión regular correcta y funciona bien. Ahora estoy tratando de eliminar los caracteres ilegales. Las reglas son, solo caracteres alfabéticos en minúsculas en la primera posición. Todas las posiciones restantes solo pueden tener letras en minúsculas y números del 0 al 9. Sin espacios o caracteres especiales. No estoy seguro de qué patrón usar en la línea de reemplazo.
Gracias por cualquier ayuda que usted nos pueda proporcionar.
Puntilla
Podrías probar el siguiente código:
const myInput = '46432e66Sc' var myPattern = new RegExp(/^[az][a-z0-9]*/); var test = myPattern.test(myInput); if (test === true) { console.log('success',myInput) } else { console.log("fail",myInput.replace(/[^a-z0-9]/g, "")) } Reemplazar está usando la siguiente expresión regular: /[^a-z0-9]/g . Esto coincide con todos los caracteres que no son minúsculas ni numéricos.
Puede validar su expresión regular y obtener ayuda de la hoja de trucos en la siguiente página: https://regexr.com/
Puede manejar esto eliminando primero los caracteres principales que harían que la entrada fallara. Luego haga una segunda limpieza en los caracteres restantes:
var inputs = ['abc123', '46432e66Sc']; inputs.forEach(i => console.log(i + " => " + i.replace(/^[^az]+/, "") .replace(/[^a-z0-9]+/g, "")));Tenga en cuenta que después de que hayamos eliminado tantos caracteres como sea necesario para que la entrada comience con una minúscula, el reemplazo para eliminar las letras que no son en minúsculas/sin dígitos no afectará ese primer carácter, por lo que podemos hacer un reemplazo general en toda la cadena. .