JS XRegExp替换所有非字符

时间:2013-09-17 19:27:20

标签: javascript regex unicode replace xregexp

我的目标是用字符串中的任何语言替换所有不是破折号( - )或不是数字或字母的字符。所有#!()[]和所有其他符号用空字符串替换。所有出现的 - 也不应该被替换。 我已经使用了这个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无效。

3 个答案:

答案 0 :(得分:1)

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

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

A jsfiddle在哪里进行一些测试......第三个XRegExp是您提出的问题。

答案 1 :(得分:1)

\p{^N}\p{^L}

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

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

答案 2 :(得分:0)

// all non letters/numbers in a string => /[^a-zA-z0-9]/g

我不知道XRegExp。

但是在js Regexp中你可以用

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