Actualmente estoy usando el siguiente código Javascript para convertir el título de un producto en URL-slug dentro de la plantilla base de mi proyecto django.
document.getElementById("title").onkeyup = function () { document.getElementById("url_slug").value = document .getElementById("title") .value.toLowerCase() .replaceAll(" ", "-") .replaceAll("'", "") };Esto es usar métodos replaceAll() consecutivos para reemplazar el espacio con un guión y luego eliminar los apóstrofes, pero me gustaría evitar todos los demás símbolos (por ejemplo, +=()[]$%@#... etc.) también.
Seguramente debe haber una mejor manera? ¡Gracias de antemano por cualquier sugerencia!
Puede eliminar todos los caracteres con la expresión regular /[^A-Za-z0-9]/g
document.getElementById("title").onkeyup = function () { document.getElementById("url_slug").value = document .getElementById("title") .value.toLowerCase().replace(/[^A-Za-z0-9]/g,'') .replaceAll(" ", "-") .replaceAll("'", "") };¿Algo como esto?
let stringToReplace = '12+3%42()S$%\|#s' let desired = stringToReplace.replace(/[^\w\s]/gi, '')El carácter ( ^ ) es la negación de lo que viene en el conjunto [...],
gi significa: global e insensible a mayúsculas y minúsculas
Además, ponemos una lista segura allí:
En nuestro caso, dígitos, caracteres, guiones bajos (\w) espacios en blanco (\s).
Entonces, lo que esté fuera de nuestra lista blanca se reemplaza con ''