Descubrí un patrón de expresiones regulares para eliminar todas las letras que no son del alfabeto: \p{L}
Por lo tanto, hice una expresión regular para eliminar todos los patrones que no son alfabéticos, dígitos ni guiones bajos: /[^\p{L}\d_]/gimu
Desafortunadamente, no funciona con un carácter hindi como #फ्रांस que da फरस
Compruébelo usted mismo aquí https://regex101.com/r/dnXDK0/1
Y por favor ayúdame :-)
Te olvidaste de los signos diacríticos. Debe agregar \p{M} o \p{Mn} en la clase de caracteres negados:
/[^\p{L}\p{M}\d_]/guVea la demostración de expresiones regulares .
Tenga en cuenta que no necesita las banderas i y m aquí. m redefine el comportamiento del ancla, pero su expresión regular no contiene ^ ni $ . i hace que las letras mayúsculas y minúsculas coincidan sin distinguir entre mayúsculas y minúsculas, pero \p{L} coincide con todas las letras, mayúsculas y minúsculas.