Javascript JS XRegExp替换所有非字符

Javascript JS XRegExp替换所有非字符,javascript,regex,unicode,replace,xregexp,Javascript,Regex,Unicode,Replace,Xregexp,我的目标是替换字符串中任何语言中非破折号(-)或非数字或非字母的所有字符!()[],以及所有其他要替换为空字符串的符号。所有出现的-也不应更换。 我使用了这个插件,但似乎我找不到神奇的解决方案:) 我试过这样做: var txt = "Ad СТИНГ (ALI) - Englishmen In New York"; var regex = new XRegExp('\\p{^N}\\p{^L}',"g"); var b = XRegExp.replace(txt, regex, "") 但结

我的目标是替换字符串中任何语言中非破折号(-)或非数字或非字母的所有字符!()[],以及所有其他要替换为空字符串的符号。所有出现的-也不应更换。 我使用了这个插件,但似乎我找不到神奇的解决方案:) 我试过这样做:

var txt = "Ad СТИНГ (ALI) - Englishmen In New York";
var regex = new XRegExp('\\p{^N}\\p{^L}',"g");
var b = XRegExp.replace(txt, regex, "")
但结果是:一个ССëêê(AL-EnglishmeINeYork)…有点奇怪

如果我还试图添加不删除“-”字符的条件,则会导致正则表达式无效

// all non letters/numbers in a string => /[^a-zA-z0-9]/g
我不知道XRegExp

但是在js Regexp中,可以用

b.replace(/[^a-zA-z0-9]/g,'')

\\p{^N}\\p{^L}
表示后跟非字母的非数字

请尝试
[^\\p{N}\\p{L}-]
这表示非数字、非字母、非破折号

A在哪里做一些测试…第三个
XRegExp
就是您要问的

\p{^N}\p{^L}
是非数字后跟非字母。您可能想说的字符既不是字母也不是数字:

[^\p{N}\p{L}]

[\p{^N}\p{^L}]
匹配任何不是数字或不是字母的字符,除非有一个字符同时是字母和数字,否则就是一切!@bobince
注意,非数字和非字母的并集可能就是整个Unicode
我在您的示例中看到,测试1保持所有字母不变,并替换空格和数字为什么当你添加{N}时,所有的字母都被替换掉了?我想做的就是替换那些不是破折号,不是数字,也不是任何语言的字母的字符。