Estoy tratando de encontrar una expresión regular para eliminar todos los espacios iniciales/posteriores, así como todos los caracteres especiales iniciales/posteriores.
Si tengo la cadena:
test = '~!#@$@ hello this is a #! test ^^#!^^ 'Me gustaría que regrese como:
'hello this is a #! test'Por lo tanto, se conservan los caracteres especiales y los espacios entre la primera y la última letra, pero se eliminan todos los caracteres iniciales y finales. Ahora mismo tengo esto:
test.replace(/[^a-zA-Z ]/g,"").replace(/^\s+|\s+$/g, "")que devuelve:
'hello this is a test'por lo que está eliminando todos los caracteres especiales y espacios iniciales/posteriores. ¿Cómo puedo preservar ese "#!" entre "a" y "prueba"?
Al usar el indicador Unicode u , puede usar las categorías Unicode para letras \p{L} y números \p{N} en una clase de caracteres negativos [^...] .
Y emparejarlos al principio ^ o | al final $ para obtener cualquier cosa que no sea una letra o un número y esté detrás o delante.
Patrón:
^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$Fragmento de prueba:
let test = '~!#@$@ hello this is a #! test ^^#!^^ '; test = test.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu, ''); document.write('['+test+']');