1

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

var txt = "Ad СТИНГ (ALI) - Englishmen In New York";
var regex = new XRegExp('\\p{^N}\\p{^L}',"g");
var b = XRegExp.replace(txt, regex, "")

但结果是:AСТИН(AL EnglishmeINeYork ...这有点奇怪

如果我尝试添加不删除“-”字符的条件,则会导致 RegEx 无效。

4

3 回答 3

1

\\p{^N}\\p{^L}表示一个非数字后跟一个非字母。

试试[^\\p{N}\\p{L}-]这意味着非数字、非字母、非破折号。

一个jsfiddle在哪里做一些测试......第三个XRegExp是你问的那个。

于 2013-09-17T19:36:10.450 回答
1
\p{^N}\p{^L}

是一个非数字后跟一个非字母。您可能想说一个既不是字母也不是数字的字符:

[^\p{N}\p{L}]
于 2013-09-17T19:49:50.407 回答
0
// all non letters/numbers in a string => /[^a-zA-z0-9]/g

我不知道 XRegExp。

但在 js Regexp 中,您可以将其替换为

b.replace(/[^a-zA-z0-9]/g,'')
于 2013-09-17T19:35:07.790 回答